I am using mac os x to realize an simple example for transeferring file but at run time I have
the error : com.enterprisedt.net.ftp.FTPException: 500 Illegal PORT command.
I use the following code:
import java.awt.FileDialog;
import java.io.IOException;
import javax.swing.JOptionPane;
import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.FileTransferClient;
import com.enterprisedt.net.ftp.FTPConnectMode;
import com.enterprisedt.util.debug.Level;
import com.enterprisedt.util.debug.*;
public class FileFTPUpload {
public String mostraDialogo(String nuovoNome)
{
String title = "File Chooser";
FileDialog dialog = new FileDialog(JOptionPane.getRootFrame(),title);
dialog.setVisible(true);
FileTransferClient ftp = new FileTransferClient();
try{
ftp.getAdvancedSettings().setControlEncoding("Windows-1252");
Logger.addAppender(new FileAppender("myLogFileName.txt"));
Logger.setLevel(Level.DEBUG);
ftp.setRemoteHost("....");
ftp.setUserName(".....");
ftp.setPassword("....");
//ftp.setRemotePort(21);
//ftp.getAdvancedFTPSettings().setConnectMode(FTPConnectMode.PASV);
//ftp.getAdvancedFTPSettings().setConnectMode(FTPConnectMode.ACTIVE);
//ftp.getAdvancedFTPSettings().setActivePortRange(61500, 61510);
}catch(Exception ex){ex.printStackTrace();}
if (dialog.getFile() != null) {
//System.out.println(dialog.getDirectory() + dialog.getFile());
String localFilePath = dialog.getDirectory() + dialog.getFile();
try {
ftp.connect();
ftp.uploadFile(localFilePath, "testupload\\"+nuovoNome);
} catch (FTPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ftp.disconnect();
//System.exit(0);
} catch (FTPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dialog.getDirectory() +dialog.getFile() + "/" + nuovoNome;
} else {
//System.out.println("0");*/
//System.exit(0);
return "0";
}
}
This code on a windows machine don't produce errors.
The output of the logger is:
DEBUG [FileTransferClient] 14 gen 2011 15:52:13.102 : Configured client
DEBUG [FTPClient] 14 gen 2011 15:52:13.144 : Connecting to ..../......
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.210 : 220 (vsFTPd 2.0.5)
DEBUG [FileTransferClient] 14 gen 2011 15:52:13.215 : Client connected
DEBUG [FileTransferClient] 14 gen 2011 15:52:13.216 : Logging in
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.219 : ---> USER .....
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.222 : 331 Please specify the password.
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.223 : ---> PASS ********
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.234 : 230 Login successful.
DEBUG [FileTransferClient] 14 gen 2011 15:52:13.236 : Logged in
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.236 : ---> TYPE I
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.238 : 200 Switching to Binary mode.
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.242 : ---> PWD
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.244 : 257 "/"
DEBUG [FTPClient] 14 gen 2011 15:52:13.343 : Attempt #1
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.350 : ListenOnAllInterfaces=true
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.384 : ---> PORT 0,0,0,0,222,102
DEBUG [FTPControlSocket] 14 gen 2011 15:52:13.385 : 500 Illegal PORT command.
INFO [FTPControlSocket] 14 gen 2011 15:52:13.386 : Expected reply codes = [200,250]
What I don't understand is the PORT output PORT 0,0,0,0,222,102 : on the windows machine the four zeros are the four places of the ip address.
Every help isreally usefull for me because are days that I am not able to solve this problem.
Thank in advance.