Avatar billede jolly_jay Nybegynder
29. marts 2005 - 09:51 Der er 11 kommentarer og
1 løsning

Java - FTP - Corrupt fil download

Jeg har et lille(stort) problem med en ftp-client jeg har lavet.
Problemer er at når jeg henter en txt fil fra serveren kommer det ned helt iorden. Men når jeg vil hente noget andet, som et BMP billede, kommer billedet ned hent forkert.

her er min kode til at hente en fil:

public void retrFile(String fileName) throws IOException{
   
    String[] command = fileName.split("\\s");
    fileName = command[1];
    if (fileName != null){
        int newPort = passivePort();

        Socket ftpGetDataSocket = new Socket(ftpHostname, newPort);
        DataInputStream ftpGetDataReader = new DataInputStream(ftpGetDataSocket.getInputStream());

        ftpWriter.write("retr " + fileName);
        ftpWriter.write("\n");
        ftpWriter.flush();
       
        RandomAccessFile outFile = new RandomAccessFile(fileName, "rw");
       
        int bytesRead = 0;
        byte[] buffer = new byte[4096];
        bytesRead = ftpGetDataReader.read(buffer);
        do{
            outFile.write(buffer, 0, bytesRead);
            bytesRead = ftpGetDataReader.read(buffer);
        }
        while (bytesRead != -1);
        outFile.close();
        ftpGetDataReader.close();
        ftpGetDataSocket.close();
    }
    else
    {
        System.out.println("retr filename");
    }
   
    inputFromKeyboard();
}

Kig evt. her:
http://jollynet.dk/ftptest.bmp
http://jollynet.dk/ftptest_efter.bmp

Hvad gør jeg forkert?
Avatar billede arne_v Ekspert
29. marts 2005 - 10:06 #1
Får du sat typen til IMAGE ?
Avatar billede arne_v Ekspert
29. marts 2005 - 10:07 #2
Og er det med vilje at du har kodet det selv fremfor at
bruge f.eks. Jakarta Commons Net ?
Avatar billede jolly_jay Nybegynder
29. marts 2005 - 10:12 #3
Ja, da det er en programerings opgave...

Men er der en måde at lave det så uanset filtype, at filerne bliver hentet korrekt?
Avatar billede arne_v Ekspert
29. marts 2005 - 11:03 #4
Du skal ihvertfald have sendt en korrekt type ascii eller type image.
Avatar billede jolly_jay Nybegynder
29. marts 2005 - 12:10 #5
Det forstår jeg ikke lige, da det er bytes den sender...
Avatar billede arne_v Ekspert
29. marts 2005 - 12:48 #6
Ja men i text mode så risikerer du at den sender CR LF alle de steder hvor der er en LF
i original filen.
Avatar billede jolly_jay Nybegynder
29. marts 2005 - 12:57 #7
Hvordan løses det med kode?
Avatar billede arne_v Ekspert
29. marts 2005 - 13:39 #8
Du sender en

TYPE I<CR><LF>

til serveren på control connection inden du laver din RETR.
Avatar billede jolly_jay Nybegynder
29. marts 2005 - 13:41 #9
okay, hvorfor havde jeg ikke tænkt på det? :P
Avatar billede jolly_jay Nybegynder
29. marts 2005 - 14:08 #10
Hehe, nu virker det, jeg havde godt tænkt på om det var den, men af mysteriske årsager har jeg ikke prøvet det.

Men tak for hjælpen, smid et svar hvis du vil have points.
Avatar billede arne_v Ekspert
29. marts 2005 - 14:17 #11
kommer her
Avatar billede jolly_jay Nybegynder
29. marts 2005 - 14:19 #12
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester