tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
Like Tree1Danke
ERLEDIGT
NEIN
ANTWORTEN
19
ZUGRIFFE
1258
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    swordwolt swordwolt ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    11
    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

    swordwolt
    Geändert von swordwolt (24.01.12 um 15:39 Uhr) Grund: Titel angepasst
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    schau mal hier:
    http://openbook.galileodesign.de/jav...0003F91F04A100

    Gruß
    Klaus
     
    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 !!

  3. #3
    swordwolt swordwolt ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    11
    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.
     

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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, ...?

  5. #5
    swordwolt swordwolt ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    11
    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.
     

  6. #6
    genodeftest genodeftest ist offline Mitglied Brillant
    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)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  7. #7
    swordwolt swordwolt ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    11
    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.
     

  8. #8
    genodeftest genodeftest ist offline Mitglied Brillant
    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)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  9. #9
    swordwolt swordwolt ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    11
    Zitat Zitat von genodeftest Beitrag anzeigen

    Was willst du mit der Datei machen? sie von deinem Backend aus auf die Festplatte speichern?
    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?
     

  10. #10
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Zitat Zitat von swordwolt Beitrag anzeigen
    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).
    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.

    Zitat Zitat von swordwolt Beitrag anzeigen
    Kann man den Dateiinhalt beim Hochladen einer Datei ohne Typfestlegung in ein Bytestream schreiben?
    Ja, du kannst beliebigen Inhalt in Bytestreams schreiben, auch Zufallszahlen

    Zitat Zitat von swordwolt Beitrag anzeigen
    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?
    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)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  11. #11
    swordwolt swordwolt ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    11
    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?
     

  12. #12
    genodeftest genodeftest ist offline Mitglied Brillant
    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)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  13. #13
    swordwolt swordwolt ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    11
    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)
     

  14. #14
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    was genau ist bei Deinem Code "response"


    Zitat Zitat von swordwolt Beitrag anzeigen
    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.
    Wieso "downloadfenster vom Browser" ?
    Das macht doch Deine Anwendung, oder nicht ?

    Zitat Zitat von swordwolt Beitrag anzeigen
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    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();
    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ß
    Klaus
    Geä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 !!

  15. #15
    swordwolt swordwolt ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    11
    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

  1. Bytestream in PHP?
    Von alphaChill im Forum PHP
    Antworten: 6
    Letzter Beitrag: 25.02.11, 15:11
  2. Antworten: 1
    Letzter Beitrag: 06.11.07, 22:27
  3. Laufzeitoptimierung BufferedImage->Bytestream
    Von swalbking im Forum Java
    Antworten: 0
    Letzter Beitrag: 10.07.07, 09:16
  4. SWT Beispiel
    Von tinella im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 03.02.06, 16:47
  5. php & oo => ein Beispiel
    Von barney_hh im Forum PHP
    Antworten: 3
    Letzter Beitrag: 27.04.05, 14:57