我正在使用ftp4j作为FTP客户端。
FTPClient client = new FTPClient();
client.connect("86.22.11.178");
client.login("usr", "pwd");
client.changeDirectory("/dir");
client.upload(file);
它在localhost中工作正常,但在封装在Web服务器上部署的JSF Web应用程序中时不起作用。我成功地进行了连接和登录,当代码到达upload命令时,它只是跳过它并且什么都不做。没有例外被抛出。
FTP服务器有完全的连接性,这不是问题。我还对文件设置了chmod 777权限,它们属于同一个所有者。
这个代码适用于Windows机器,可能是Linux上运行的机器有不同的“规则”吗?
答案 0 :(得分:0)
您的代码似乎是正确的。尝试找出它抛出的FTP错误。有时可能会发生超时,我遇到了!!!
import org.apache.commons.net.ftp。;
import java.io。;
/ **
*此类用于演示Jakarta Commons Net软件包的用法
* /
公共类TestFTP {
/** Creates a new instance of TestFTP */
public TestFTP() {
}
/**
* main - Unit test program
* @param args Command line arguments
*
*/
public static void main(String args[]) {
try {
String ftpHost = "157.227.38.131";
String ftpUserName = "firebird";
String ftpPassword = "tcs@12345";
String ftpRemoteDirectory = "/etc/vlp/uploaded_files";
String fileToTransmit = "c:\\temp\\VLPDYN18022010174439.an";
//Create a Jakarta Commons Net FTP Client object
FTPClient ftp = new FTPClient();
//A datatype to store responses from the FTP server
int reply;
//
//Connect to the server
//
ftp.connect(ftpHost);
//
// After connection attempt, you should check the reply code to verify success.
//
reply = ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)) {
try {
ftp.disconnect();
} catch (Exception e) {
System.err.println("Unable to disconnect from FTP server " +
"after server refused connection. "+e.toString());
}
throw new Exception ("FTP server refused connection.");
}
System.out.println("Connected to " + ftpHost + ". "+ftp.getReplyString());
//
//Try to login
//
if (!ftp.login(ftpUserName, ftpPassword)) {
throw new Exception ("Unable to login to FTP server " +
"using username "+ftpUserName+" " +
"and password "+ftpPassword);
}
System.out.println(ftp.getReplyString());
System.out.println("Remote system is " + ftp.getSystemName());
//
//Set our file transfer mode to either ASCII or Binary
//
//ftp.setFileType(FTP.ASCII_FILE_TYPE);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//
//Change the remote directory
//
if (ftpRemoteDirectory != null && ftpRemoteDirectory.trim().length() > 0) {
System.out.println("Changing to FTP remote dir: " + ftpRemoteDirectory);
ftp.changeWorkingDirectory(ftpRemoteDirectory);
reply = ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)) {
throw new Exception ("Unable to change working directory " +
"to:"+ftpRemoteDirectory);
}
}
//
//Get the file that we will transfer and send it.
//
File f = new File(fileToTransmit);
System.out.println("Storing file as remote filename: " + f.getName());
boolean retValue=true;
try{
retValue = ftp.storeFile(f.getName(), new FileInputStream(f));
}catch(Exception e){e.printStackTrace();}
if (!retValue) {
throw new Exception ("Storing of remote file failed. ftp.storeFile() returned false.");
}
//Disconnect from the FTP server
//
try {
//ftp.logout();
ftp.disconnect();
} catch (Exception exc) {
System.err.println("Unable to disconnect from FTP server. " + exc.toString());
}
} catch (Exception e) {
System.err.println("Error: "+e.toString());
}
System.out.println("Process Complete.");
System.exit(0);
}
}