我在尝试使用java上传ftp服务器上的文件时遇到了一些问题。 这是我的代码函数:
public static void upload_files(String un, String pw, String ip, String f){
try
{
FTPClient client = new FTPClient();
client.connect(ip);
client.login(un,pw);
InputStream is = new FileInputStream(f);
client.storeFile("test2",is);
is.close();
} catch(Exception e) {
e.printStackTrace();
}
}
“f”是我要上传的文件的路径(即“C:\ myfile”)。编译期间没有错误,一个文件很好地发送到服务器,但遗憾地是空的(0字节)。
我还注意到,即使我有一个非常好的ISP,也需要很长时间才能上传一些文字(大约40秒)。
我事先感谢所有帮助我的人。
此致
答案 0 :(得分:1)
我认为这可能与文件传输模式有关。您可以将trandfer模式设置为Binary。有时,当您以ASCII格式发送数据时,它会被破坏。 参考这个 https://superuser.com/questions/82726/how-to-set-binary-mode-by-default-when-ftping-to-a-remote-site
它告诉我们如何在FTP命令客户端中设置二进制模式。您也将在FTPClient类中有类似的规定。
刚刚发现我认为这里回答了类似的问题 FTPClient - Java, upload file
答案 1 :(得分:0)
似乎问题与FTPClient的实现有关。你确定这个课程是这样的吗?
尝试上传到其他服务器或使用其他类来查找失败的原因。
另外:您确定关闭FileInputStream是您的责任吗?我可以想象.storeFile(…)
方法会在完成后关闭它。
答案 2 :(得分:0)
在client.login之前添加这些行ftpClient默认协议仅为您需要指定二进制模式的其他文件的全文
client.enterLocalPassiveMode()
client.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE);
client.setFileTransferMode(FTP.BINARY_FILE_TYPE);