Hello World
Ich habe ein Problem mit meinem FTPClient. I benütze eine Erweiterung von org.apache.commons.net.ftp.FTPClient. Ich habe ein Ubuntu OS auch einer i386 architektur. I verbinde zu einem FTP Server, der soviel ich weiss, auch auf irgendeinem UNIX betrieben wird.
Ich kann Files vom Server "herunterladen", aber hochladen funktioniert nicht. Folgend einige Informationen, die ich mir auf die Konsole ausgaben liess:
Danach bin ich per Debugger in den Apache-Quelltext und habe herausgefunden, dass auf folgender Zeile null zurückgegeben wird:
Diese Zeile ist: FTPClient.java:498
Folgend der ganze Quelltext:
Achtung:
Ich denke es ist logisch, dass ich nicht die Klasse selbst starte, sondern aus einer anderen heraus, wo ich zuerst ein objekt erstelle und dann nur die methode uploadImage() aufrufe. Ich gebe Ihr als Parameter jedoch Dummy-Strings mit, weil sie sowieso nicht beachtet werden (zum test).
Zögert nicht mich zu fragen, falls etwas nicht klar sein sollte.
es danke und grüsst
jukka
Ich habe ein Problem mit meinem FTPClient. I benütze eine Erweiterung von org.apache.commons.net.ftp.FTPClient. Ich habe ein Ubuntu OS auch einer i386 architektur. I verbinde zu einem FTP Server, der soviel ich weiss, auch auf irgendeinem UNIX betrieben wird.
Ich kann Files vom Server "herunterladen", aber hochladen funktioniert nicht. Folgend einige Informationen, die ich mir auf die Konsole ausgaben liess:
Reply String: 230 User web282f2 logged in
setFileType: true
execute: screenShot
Change w-Dir: true
status: 227 Entering Passive Mode (88,198,40,25,150,29).
storeFile: false
Danach bin ich per Debugger in den Apache-Quelltext und habe herausgefunden, dass auf folgender Zeile null zurückgegeben wird:
Java:
if (pasv() != FTPReply.ENTERING_PASSIVE_MODE)
return null;
Folgend der ganze Quelltext:
Achtung:
Ich denke es ist logisch, dass ich nicht die Klasse selbst starte, sondern aus einer anderen heraus, wo ich zuerst ein objekt erstelle und dann nur die methode uploadImage() aufrufe. Ich gebe Ihr als Parameter jedoch Dummy-Strings mit, weil sie sowieso nicht beachtet werden (zum test).
Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.io.CopyStreamException;
public class FtpClient {
private FTPClient client;
public FtpClient(String host, String user, String password)
throws IOException {
client = new FTPClient();
client.connect(host);
client.login(user, password);
System.out.println("Reply String: "+client.getReplyString());
System.out.println("setFileType: "+client.setFileType(FTP.BINARY_FILE_TYPE));
client.enterLocalPassiveMode();
}
public void uploadImage(String remote, String local) {
try {
System.out.println("Change w-Dir: "+client.changeWorkingDirectory("images"));
File f = new File("/home/jukka/Desktop/help.png");
InputStream input = new FileInputStream(f);
boolean retValue = client.storeFile(f.getName(), input);
input.close();
System.out.println("status: "+client.getStatus());
System.out.println("storeFile: "+retValue);
} catch (FTPConnectionClosedException e){
e.printStackTrace();
}catch (CopyStreamException e){
e.printStackTrace();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void uploadFile(String remote, String local) throws IOException {
InputStream input = new FileInputStream(local);
client.storeFile("images/" + remote, input);
input.close();
}
public boolean cd(String destination) throws IOException {
return client.changeWorkingDirectory(destination);
}
public InputStream read(String filename) throws IOException {
return client.retrieveFileStream(filename);
}
}
Zögert nicht mich zu fragen, falls etwas nicht klar sein sollte.
es danke und grüsst
jukka