在我的ftp服务器上使用JAVA上传后清空文件

尝试使用java在我的ftp服务器上上传文件时,我遇到了一些问题。 这是我的代码function:

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秒)。

我提前感谢所有帮助我的人。

问候,

我认为这可能与文件传输模式有关。 可以将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,上传文件

似乎问题与FTPClient的实现有关。 你确定这个课程是这样的吗?

尝试上传到其他服务器或使用其他类来查找失败的原因。

另外:您确定关闭FileInputStream是您的责任吗? 我可以想象.storeFile(…)方法会在完成后关闭它。

在client.login之前添加这些行ftpClient默认协议仅为您需要指定二进制模式的其他文件的全文

 client.enterLocalPassiveMode() client.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE); client.setFileTransferMode(FTP.BINARY_FILE_TYPE);