# FTP Up-Download Problem // Jakarta Commons



## fugu (14. Jun 2007)

Ich versuche seit einiger Zeit einen Filedownload / upload per FTP in Java zu realisieren.  Das Herstellen sowie das Kappen einer Verbindung funktioniert einwandfrei, auch das löschen einer Datei funktioniert problemlos.
Nach dem Download einer Datei ist diese allerdings nurnoch 0kb groß. 
Mit folgendem Quellcode versuche ich den Download umzusetzen. 


```
public void downloadFile(String local, String remote) {
		try {
			ftp.setFileTransferMode(FTPClient.ASCII_FILE_TYPE); //BINARY_FILE_TYPE bringt kein anderes Ergebnis
			File file = new File(local);
			FileOutputStream fos = new FileOutputStream(file);
			ftp.retrieveFile(remote, fos);
			fos.close();
		} catch (IOException e) {
			System.out.println("Could not download file!");
			e.printStackTrace();
		}	
	}
```

Leider kann ich meinen Fehler nicht finden. Würde mich freuen, wenn jemand über den Quellcode drübergucken könnte.


----------



## DP (15. Jun 2007)

*verschoben*


----------



## Gast (28. Jun 2007)

Hi,

nachdem sich dein Programm mit einem Server mit der Codezeile FTPClient.connect() verbunden hat, musst du vielleicht mit FTPClient.enterLocalPassiveMode() in den Passivmodus wechseln. Hat bei mir zumindest funktioniert.

Gruß


----------



## fugu (28. Jun 2007)

Tatsache, das wars! Vielen Dank.


----------



## stino (2. Okt 2008)

Hallo,

ich habe noch ein Problem wenn ich diese Methode verwende. Die Dateien (ZIP-Files ca. 500k) sind dann 1-2k größer als die eigentliche Datei und können nicht geöffnet werden.

Weiß jemand, was das Problem ist?


```
public void downloadFile(String local, String remote) {

		FTPClient ftp = new FTPClient();
		try {
			ftp.connect(ftpserver);
			ftp.login(user, password);
			
			ftp.enterLocalPassiveMode();
			ftp.setFileTransferMode(FTPClient.BINARY_FILE_TYPE); 
			
			File file = new File(local);
			FileOutputStream output = new FileOutputStream(file);
			ftp.retrieveFile(remote, output);
			output.close();
			ftp.logout();
			ftp.disconnect();

		} catch (IOException e) {
			System.out.println("Could not download file!");
			e.printStackTrace();
		}

	}
```


----------



## elvisfromhell (31. Okt 2008)

ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);


----------



## blackened (10. Nov 2008)

Hallo zusammen,

bin den vorherigen Einträgen gefolgt und hab verschiedenes zwischen BINARY und ASCII FileType ausprobiert. 
Leider jedoch immer das gleiche Ergebnis, dass die Dateien erstellt werden mit 0 kb.


```
public void downloadFile(String local, String remote, FTPClient ftp) {
    try { 
        ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
        ftp.setFileTransferMode(FTPClient.ASCII_FILE_TYPE);
        ftp.enterLocalPassiveMode();
	          
        File file = new File(local); 
        FileOutputStream fos = new FileOutputStream(file); 
        ftp.retrieveFile(remote, fos); 
        fos.close(); 
        } catch (IOException e) { 
            logger.info("Could not download File "+ new Throwable(e));
        }  
}
```

Findet ihr noch einen Fehler?

Zu den Dateien: Sind alles .pdf Dateien bis zu einer Größe von 3MB.

Danke für die Hilfe im voraus.


----------



## Elrohir (18. Jan 2009)

soweit ich mich entsinne, sollte der filetransfermode auch auf binary geschaltet werden, anstatt auf ascii und vor das fos.close() müsste afair noch ein fos.flush(); aber kann sein, dass ich da gerade was verwechsle o.o


----------

