-
Hallo zusammen,
Problemstellung:
Ich soll einen Download per java für meine Gruppe erstellen. Die Datei kommt vom backend per bytestream und soll als Datei auf dem jeweiligen Rechner gespeichert werden. Nun hab ich leider noch keinen Zugriff aufs backend. Jedoch benötige ich einen bytestream zum Testen der Funktion, denn ich leider bei Gnicht finden kann.
Meine Farge:
Könnte mir jemand ein bytestream Beispiel für eine konkrete Datei (eine kleine Datei
)
erstellen?
Vielen Dank
MfG
swordwoltGeändert von swordwolt (24.01.12 um 15:39 Uhr) Grund: Titel angepasst
-
21.12.11 10:23 #2
Moin,
schau mal hier:
http://openbook.galileodesign.de/jav...0003F91F04A100
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
wie input und outputstream funktionieren ist mir schon klar.
Mein Problem ist das meine Aufgabe ist den Download zu programmieren. Und zum testen ob er auch richtig funktioniert brauch ich ein Beispiel eines Bytearrays eines Dokumentes. Keinen Code nur das Bytearray als String.
-
Hi
Und warum machst du dir nicht einfach eins, in dem zB. Hallo steht?
Ist eine kleine Datei, aber es ist eine.
PS: Willkommen bei tutorials.de!Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Ja aber in dem Bytestrem muss doch auch der Dateityp irgendwie definiert sein. Man sollte ja schon irgendwie unterscheiden können ob es ein jpg oder ein txt ist.
-
01.01.12 21:01 #6
- Registriert seit
- Jun 2009
- Beiträge
- 870
Nö, es gibt keine zuverlässige Methode um zu bestimmen, welchen Typ die Datei hat. Du bist offensichtlich von Windows gewohnt, dass die Dateien eine Endung haben, die auf den Typ schließen lässt. Es gibt aber noch eine weitere bekannte Möglichkeit, auf den Dateityp zu schließen: Indem du die ersten Bytes ausliest und mit einer festgelegten Tabelle vergleichst, siehe https://en.wikipedia.org/wiki/File_format#Magic_number
Warum überträgst du nicht einfach auch zusätzlich den Dateinamen?Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Nunja ich bekomme von Backend nur einen Bytestream. Jedoch kann ich bei der Anfrage ans Backend den Typ eigentlich abfangen.
Mal etwas anders mein Problem:
Wenn ich aus einen string "Hallo Welt" ein Bytearray erstelle und dieses Bytearray im Download
als test.txt ausgeben lasse.
Schreibt es mir dann Hallo Welt in die test.txt ?
Ohne das beim einlesen ein Dateityp mitgegeben wurde?
Ich mein Das kann doch nicht einfach so funktionieren. Da muss es doch bestimmte Norm geben wie so ein Bytearay aufgebaut ist um eine Datei wiederzuspiegeln.
-
03.01.12 21:23 #8
- Registriert seit
- Jun 2009
- Beiträge
- 870
Das kommt ganz darauf an. Um einen Dateityp festzulegen, gibt es normalerweise 3 Wege:
1. die „magic number“, https://en.wikipedia.org/wiki/File_format#Magic_number (unter Unix-basierten Systemen der gängige Weg)
2. der MIME-Type, https://en.wikipedia.org/wiki/Internet_media_type (gängig bei Kommunikation im Internet, dafür gibt es eigene Header in Protokollen wie SMTP und HTTP)
3. die Dateiendung (Filename extension), auf Windows üblich
Was willst du mit der Datei machen? sie von deinem Backend aus auf die Festplatte speichern? Welches Backend nutzt du denn? Unterstützt es wenigstens eine der oben genannten Methoden?
Im Zweifelsfall würde ich so vorgehen: Die Datei speichern und dann mit Files.probeContentType detektieren lassen. Achtung, dazu wird Java 7 benötigt!Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Ja
Das Backend wird von einer anderen Gruppe abgehandelt. Diese erstellen ja eigentlich die Dateien nicht. Die Dateien sind auf Rechner x gespeichert. Von diesem auf den server hochgeladen. und von dem auf Rechner y wieder heruntergeladen.
Jedoch liegt die Uploadfunktion ebenfalls nicht in meinem Aufgaben bereich (wobei ich langsam glaub das ich um die hier nicht herumkomme).
Das ganze muss als Bytestream relisiert werden.
Was mich nun interessiert ist:
Kann man den Dateiinhalt beim Hochladen einer Datei ohne Typfestlegung in ein Bytestream schreiben?
Und noch viel wichtiger:
Wenn man dann den Bytestream wieder zu einer Datei beim Download zurückumwandeln will und den Dateityp extern holt (gleicher Typ wie bei der geuploadeten Datei sozusagen). Wird dann d der Bytestream richtig zurück umgewandelt und in die Datei geschrieben?
-
03.01.12 21:56 #10
- Registriert seit
- Jun 2009
- Beiträge
- 870
Dann musst du dich mit denen wohl auf eine gemeinsame Funktionalität einigen. Eigentlich müsste(n) der/die bei der Implementation des Updoaders auf die gleichen Probleme stoßen. Nebenbei ist es auch meistens sinnvoll, die Dateigröße mit abzuspeichern.
Ja, du kannst beliebigen Inhalt in Bytestreams schreiben, auch Zufallszahlen
Das hat gar nichts mit dem Bytestream zu tun. Bytestream ist so konzipiert, dass die Bytes übertragen werden, d.h. an der ursprünglichen Datei wird erst mal nichts geändert. Wenn Rechner x die Dateien in einem Bytestream liest, der Server in einem Bytestream schreibt, wieder in einem Bytestream liest und du wieder per Bytestream auf Rechner y schreibst, funktioniert das.Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Das heist ich könnte auch einen string "Hello world" umwandeln in einen Bytestream und diesen Bytestream beim Download als test.txt ausgeben. Und dann würde der die Datei auf meinem Rechtner test.txt heißen und in der Datei würde" Hello world" stehen.
Ist das korrekt?
-
03.01.12 23:04 #12
- Registriert seit
- Jun 2009
- Beiträge
- 870
Ja, genau.
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Ich komme leider imernoch nicht weiter vllcht kann mir jemand Helfen und sagen was ich falsch mache.
Der String wird zwar als Antwort zurückgelifert jedoch schreibt er ihn mir nicht in die Datei und öffnet auch nicht das downloadfenster vom Browser.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
@Controller public class AjaxDocumentDownloadController { @RequestMapping(value = "/master/download", method = RequestMethod.GET) public void download( @RequestParam(value = "folderPath", required = true) String folderPath, HttpServletRequest request, HttpServletResponse response ) throws Exception { response.setContentType("application/pdf"); response.setHeader("Content-Description", "File Transfer"); response.setHeader("Content-Disposition", "attachment;filename=downloadfilename.pdf"); StringBuffer sb = new StringBuffer("whatever string you like"); InputStream in = new ByteArrayInputStream(sb.toString().getBytes("UTF-8")); ServletOutputStream out = response.getOutputStream(); byte[] outputByte = new byte[24]; // copy binary connect to output stream while (in.read(outputByte, 0, 24) != -1) { out.write(outputByte, 0, 24); } in.close(); out.flush(); out.close(); } }Geändert von swordwolt (18.01.12 um 16:29 Uhr)
-
18.01.12 16:01 #14
Moin,
was genau ist bei Deinem Code "response"
Wieso "downloadfenster vom Browser" ?
Das macht doch Deine Anwendung, oder nicht ?
Also gleichzeitig Lesen und Schrieben über die gleiche Variable wird sicherlich problematisch sein.
Lies am besten erst den InputStream ein und schreibe dann nach Output !
Gruß
KlausGeändert von vfl_freak (18.01.12 um 16:01 Uhr) Grund: 2 Tippfehler
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Ich habe diese Seite verwendet:
http://www.mkyong.com/java/how-to-do...site-java-jsp/
und ich dachte wenn ich so die Funktion aufrufe wird das Downloadfenster des Browsers geöffnet. Wo ich den Speicherort für die Datei festlegen kann.
Ähnliche Themen
-
Bytestream in PHP?
Von alphaChill im Forum PHPAntworten: 6Letzter Beitrag: 25.02.11, 15:11 -
bestimmte Stellen eines Bytestream auslesen und daraufhin umwandeln
Von Froelle im Forum C/C++Antworten: 1Letzter Beitrag: 06.11.07, 22:27 -
Laufzeitoptimierung BufferedImage->Bytestream
Von swalbking im Forum JavaAntworten: 0Letzter Beitrag: 10.07.07, 09:16 -
SWT Beispiel
Von tinella im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 03.02.06, 16:47 -
php & oo => ein Beispiel
Von barney_hh im Forum PHPAntworten: 3Letzter Beitrag: 27.04.05, 14:57



1Danke

Zitieren


Login





