Announcement

Collapse
No announcement yet.

Dateien richtig einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dateien richtig einlesen

    Ich möchte eine ftp-applikation schreiben, durch die man dateien mittels eines applets auf einer webseite über ftp auf einen server laden kann.
    Mit einer reinen Textdatei funktioniert alles wunderbar. Aber wenn ich nun eine Bilddatei hochladen will, dann kann Java die nicht richtig auslesen. Ich bekomm lauter Sonderzeichen und zudem ist dann die hochgeladene Datei viel kleiner als die Quelldatei. Wie kann ich das ändern? Was muss ich am Einleseverfahren ändern?

    mein code ist:

    TelnetOutputStream t = ftp.put(uploaddir+"/"+dateiname);
    InputStreamReader inputstreamreader = new InputStreamReader(new FileInputStream(localCwd+"/"+dateiname), "UTF-16");
    int c;
    while ((c = inputstreamreader.read()) > 0){
    t.write(c);
    }
    inputstreamreader.close();
    t.close();

    besten Dank im Voraus
    minomis

  • #2
    Hallo minomis,

    Dein Code liest binär aus einer Datei, codiert das ganze dann nach Unicode-Text um (mit UTF16-Codierung) und schreibt dann wieder byteweise in einen binären OutputStream.

    Du solltest die Daten rein binär verarbeiten und den InputStreamReader weglassen:

    Code:
    OutputStream t = ftp.put(uploaddir+"/"+dateiname);
    InputStream inputstream = new FileInputStream(localCwd+"/"+dateiname);
    int c;
    while ((c = inputstream.read()) > 0){
    t.write(c);
    }
    inputstream.close();
    t.close();
    Viele Grüße,

    Alwin

    Comment


    • #3
      Hi

      Hi!

      Habe nun den InputStream versucht.
      Habe allerdings noch einen Fehler entdeckt.
      die zeile:
      while ((c = inputstream.read()) > 0){
      muss folgendermasen lauten
      while ((c = inputstream.read()) > -1){

      Dadurch liest Java jetzt alle Zeichen ein.
      Alerdings habe ich nun folgendes Problem:
      Die Daten werden anscheinend nicht richtig an den Server übertragen. Ein Bild ist nachher z.B: verzerrt.
      Kent sich jemand mit dem TelnetOutputStream aus?
      wenn ich dies lokal probiere, also mit normalem OutputStream funktionierts einwandfrei. Nur soll es eben an den ftp-server geschickt werden.

      Besten Dank für Hilfe
      Grüsse minomis
      Zuletzt editiert von minomis; 19.04.2007, 12:08.

      Comment


      • #4
        Ist der FTP-Server denn im binary mode (TYPE I) für die Dateiübertragung?

        Comment


        • #5
          Ich habe keine Ahnung? Wo kann ich das überprüfen? bzw. wie kann ich das einstellen?

          mfg
          minomis

          Comment


          • #6
            In FTP ist es das Kommando TYPE I, aber das kapselt normalerweise der FTP-Client. Ich weiß nicht welchen Du benutzt. Bei dem von Apache ist es die Methode FTPClient.setFileType(int fileType).

            http://jakarta.apache.org/commons/ne...FTPClient.html

            http://jakarta.apache.org/commons/ne...tFileType(int)

            Comment


            • #7
              Super

              Habs hinbekommen.

              Vielen vielen Dank.

              Ich benutz den Ftp-Client, den Java mitbringt.
              sun.net.ftp.FtpClient
              Der ist eben schlecht dokumentiert, bzw die Server auf denen die Seiten der Doku liegen sind lahm. Und Sun selbst hat dazu keine DokuSeiten.

              Naja, jetzt läufts. bzw es laufen die Grundfunktionen.

              mfg
              minomis

              Comment


              • #8
                daten upload

                hallo minomis,

                könnest du mir die funktion auchzu kommen lassen. ich benötige ebenfalls diese upload funktion und habe probleme.

                vielen Dank
                Frank

                Comment

                Working...
                X