当我尝试使用apache commons ftpClient和此代码上传一个简单的文本文件时:
imports*
public class ftpUpload {
public static void main(String[] args) {
FTPClient ftp = new FTPClient();
int reply;
// connect
try {
ftp.connect(serverAdd);
ftp.login(username,password);
reply = ftp.getReplyCode();
if(FTPReply.isPositiveCompletion(reply)){
System.out.println("Connected Success..");
// upload file
try {
String fileDir = "testfile.txt";
FileInputStream in = null;
in = new FileInputStream(fileDir);
ftp.storeFile(fileDir,in);
System.out.println("File upload complete..");
}catch(IOException e){
System.out.println(e);
}
ftp.disconnect();
System.out.println("Disconnected..");
}else {
System.out.println("Connection Failed..");
ftp.disconnect();
}
} catch (SocketException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
文件在FTP服务器的根目录中创建,但它是空的。怎么了?上传PDF文件时,我已经尝试将ftp模式更改为BINARY。但文件大小也是0。
ftp.setFileType(FTP.BINARY_FILE_TYPE);
我也只想上传一堆txt文件,所以默认的ascii模式应该没问题吧?
答案 0 :(得分:2)
答案 1 :(得分:2)
我遇到了同样的问题。创建的文件大小为0 KB。将模式设置为被动后,我的文件成功传输到FTP服务器。事实上,在FTP服务器上传文件时我们需要注意三件事。
1)。将文件类型设置为BINARY
objFtpClient.setFileType(FTP.BINARY_FILE_TYPE);
2)。将文件传输模式设置为BINARY
objFtpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
3)。将Mode设置为Passive(我不知道它在内部做了什么。但它有效......!)
objFtpClient.enterLocalPassiveMode();
答案 2 :(得分:0)
您可能还必须将FileTranserMode设置为二进制文件:
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setFileTransferMode(FTP.BINARY_FILE_TYPE);