# apache commons net ftp bei upload unvollständig



## carraway (5. Jun 2011)

Hallo Leute, 

ich versuche eine gewöhnliche Textdatei auf meinen Webserver per ftp hochzuladen aber die Datei landet immer unvollständig auf meinem Server!

Zunächst mal hier mein Quellcode: 

```
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.commons.net.ftp.FTPClient;

public class FTPClientTest {

	private static String localFilePath = "E:\\";
	private static String localFileName = "shop_data.txt";
	
	
	protected static void putFile() {
		FTPClient client = new FTPClient();
		File localFile = null;
		FileInputStream fis = null;
		int ch;
		
        try {
            client.connect("ftp.meine-url.de");

            boolean login = client.login("username", "passwort");
          
            if (login) {
                System.out.println("Login success...");
                
                try {
                	localFile = new File(localFilePath+localFileName);
                	fis = new FileInputStream(localFile);
                	
                	//while( (ch = fis.read()) != -1) {
                	//	System.out.print((char)ch);
                	//}
                	                	
                	Boolean store = client.storeFile(localFileName, fis);
                	System.out.println("Antwort: "+client.getReplyString());
                	
                	if (store) {
                		System.out.println("Datei gespeichert!");
                	} else {
                		System.out.println("Datei speichern fehlgeschlagen!");
                	}
                	
                	
	                } catch (FileNotFoundException e) {
	                	  e.printStackTrace();
	                } catch (IOException e) {
	                    e.printStackTrace();
	                } finally {
	                	if (fis != null) fis.close();
	                }
                
                boolean logout = client.logout();
                if (logout) {
                    System.out.println("Logout from FTP server...");
                }
            } else {
                System.out.println("Login fail...");
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                client.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
	}

	
	
	public static void main(String[] args) {
		putFile();
    }
}
```


und hier der Inhalt meiner Test-Textdatei (E:\shop_data.txt):

```
Bücher Formulare Schreibblöcke|Bucheinbandfolie|44413117|Buchschutzfolien, selbstklebend|0.79|Transparente, glänzende Polypropylen-Folie zum Einbinden von Büchern, zum Schutz-Kaschieren von Karten etc.|||44413120,44413119,44413118||1|44413117.jpg||1|ST||Connect|Buchfolien;Klebefolien;Bucheinbandfolien;Selbstklebefolie;Selbstklebefolien;Folien;Einbandfolien|0||||1||Größe (B x L):45 cm x 1 m#||0|0|20642||||x
Bücher Formulare Schreibblöcke|Bucheinbandfolie|44413118|Buchschutzfolien, selbstklebend|1.25|Transparente, glänzende Polypropylen-Folie zum Einbinden von Büchern, zum Schutz-Kaschieren von Karten etc.|||44413120,44413119,44413117||1|44413118.jpg||1|ST||Connect|Buchfolien;Klebefolien;Bucheinbandfolien;Selbstklebefolie;Selbstklebefolien;Folien;Einbandfolien|0||||1||Größe (B x L):45 cm x 2 m#||0|0|20643||||x
Bücher Formulare Schreibblöcke|Bucheinbandfolie|44413119|Buchschutzfolien, selbstklebend|1.49|Transparente, glänzende Polypropylen-Folie zum Einbinden von Büchern, zum Schutz-Kaschieren von Karten etc.|||44413120,44413118,44413117||1|44413119.jpg||1|PG||Connect|Buchfolien;Klebefolien;Bucheinbandfolien;Selbstklebefolie;Selbstklebefolien;Folien;Einbandfolien|0||||1||Größe (B x L):45 cm x 3 m#||0|0|20644||||x
Bücher Formulare Schreibblöcke|Bucheinbandfolie|44413120|Buchschutzfolien, selbstklebend|2.09|Transparente, glänzende Polypropylen-Folie zum Einbinden von Büchern, zum Schutz-Kaschieren von Karten etc.|||44413119,44413118,44413117||1|44413120.jpg||1|ST||Connect|Buchfolien;Klebefolien;Bucheinbandfolien;Selbstklebefolie;Selbstklebefolien;Folien;Einbandfolien|0||||1||Größe (B x L):45 cm x 5 m#||0|0|20645||||x
```

und hier als Beispiel was nach dem Upload noch von der Datei übrig bleibt: 

```
Bücher Formulare Schreibblöcke|Bucheinbandfolie|44413117|Buchschutzfolien, selbstklebend|0.79|Transparente, glänzende Polypropylen-Folie zum Einbinden von Büchern, zum Schutz-Kaschieren von Karten etc.|||44413120,44413119,44413118||1|44413117.jpg||1|ST||Connect|Buchfolien;Klebefolien;Bucheinbandfolien;Selbstklebefolie;Selbstklebefolien;Folien;Einbandfolien|0||||1||Größe (B x L):45 cm x 1 m#||0|0|20642||||x
Bücher Formulare Schreibblöcke|Bucheinbandfolie|44413118|Buchschutzfolien, selbstklebend|1.25|Transparente, glänzende Polypropylen-Folie zum Einbinden von Büchern, zum Schutz-Kaschieren von Karten etc.|||44413120,44413119,44413117||1|44413118.jpg||1|ST||Connect|Buchfolien;Klebefolien;Bucheinbandfolien;Selbstklebefolie;Selbstklebefolien;Folien;Einbandfolien|0||||1||Größe (B x L):45 cm x 2 m#||0|0|20643||||x
Bücher Formulare Schreibblöcke|Bucheinbandfolie|44413119|Buchschutzfolien, selbstklebend|1.49|Transparente, glänzende Polypropylen-Folie zum Einbinden von Büchern, zum Schutz-Kaschieren von Karten etc.|
```

Folgender Block des Inhalts der ursprünglichen Datei fehlt einfach am Ende: 

```
||44413120,44413118,44413117||1|44413119.jpg||1|PG||Connect|Buchfolien;Klebefolien;Bucheinbandfolien;Selbstklebefolie;Selbstklebefolien;Folien;Einbandfolien|0||||1||Größe (B x L):45 cm x 3 m#||0|0|20644||||x
Bücher Formulare Schreibblöcke|Bucheinbandfolie|44413120|Buchschutzfolien, selbstklebend|2.09|Transparente, glänzende Polypropylen-Folie zum Einbinden von Büchern, zum Schutz-Kaschieren von Karten etc.|||44413119,44413118,44413117||1|44413120.jpg||1|ST||Connect|Buchfolien;Klebefolien;Bucheinbandfolien;Selbstklebefolie;Selbstklebefolien;Folien;Einbandfolien|0||||1||Größe (B x L):45 cm x 5 m#||0|0|20645||||x
```


In meinem Java-Code ist eine auskommentierte while-Schleife, die den FileInputStream der Datei auslesen kann und dort ist der Datei-Inhalt immer komplett! 

Direkt danach kommt die storeFile-Methode und die Server-Antwort: 
	
	
	
	





```
Antwort: 226 Transfer complete
```

Wenn ich dann die auf diese Weise hochgeladene Datei mit FileZilla herunterlade und öffne fehlt dann immer das Ende wie oben beschrieben. Ist der Datei-Inhalt zu kurz fehlt der Inhalt auf der Server-Datei komplett! 

Hat jemand von euch eine Ahnung woran das liegen könnte und wie man das beheben könnte?

Grüße von einem ratlosen
Carraway


----------



## Empire Phoenix (6. Jun 2011)

Ist der FTP transfer im binary oder text modus? Weil kann das zufällig sein das dein rechner windows und der server linux ist? und der beim transfer fehlerhaft versucht da irgentwelche zeilenumbrüche ect zu konvertieren?


----------



## carraway (6. Jun 2011)

Ja das kann sein, ich selbst habe Windows 7 am laufen und ich gehe doch sehr stark davon aus, dass die Server meines Providers mit Linux laufen. 

Aber den File-Type anzupassen habe ich sogar schon versucht. Unmittelbar vor der storeFile-Methode hatte ich sowohl 
	
	
	
	





```
setFileType(client.ASCII_FILE_TYPE)
```
 als auch 
	
	
	
	





```
setFileType(client.BINARY_FILE_TYPE)
```
 stehen, aber im Ergebnis war das leider kein Unterschied.


----------



## carraway (7. Jun 2011)

Zur Info:

Ich habe eine andere FTP-Lib namens edtftpj 2.2.2 ausprobiert und damit wird die Datei vollständig übertragen. 

Zwar gibt es mehrere Warnungen im Eclipse, weil z.B. Vectoren keine Generic-Typbeschreibung haben, aber dennoch funktioniert es.


----------

