我正在试着做一个非常简单的文件上传。我想要一个Java的FTPClient,它可以上传任何我告诉它的文件。但是pdf总是乱七八糟,我的pdf编辑器(Adobe)打不开它,说有一个I/O错误。
我使用了下面的类:
import org.apache.commons.net.ftp.FTPClient;
....
FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
client.connect("mydomain.com");
client.login("user", "password");
String filename = "myPDF.pdf";
fis = new FileInputStream(filename);
client.storeFile("temp.pdf", fis);
fis.close();
client.logout();
} catch (IOException e) {
e.printStackTrace();
}为什么这个不起作用,我该如何修复它?
发布于 2011-08-30 03:45:33
它不起作用,因为FTPClient的默认传输模式是FTP.ASCII_FILE_TYPE。您只需将配置更新为以二进制模式传输即可。
发布于 2011-11-15 16:58:05
将此添加到您的文件中
ftp.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE);
ftp.setFileTransferMode(FTP.BINARY_FILE_TYPE);我在处理xlsx文件时也遇到了同样的问题,这是一个很好的解决方案。
发布于 2011-05-08 13:52:22
人们经常忘记,FTP有两种操作模式--一种用于文本文件,另一种用于二进制(图像)文件。在过去,从命令行ftp客户端进行连接时,我们会在请求文件之前小心地记住设置传输模式,否则我们会遇到您可能遇到的那种问题。如今,许多情况似乎都默认使用二进制,但显然不是你的。
您可能需要告诉ftp实现以二进制/映像模式进行传输。
https://stackoverflow.com/questions/5925572
复制相似问题