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

时间:2012-08-08 21:20:00

标签: java file upload ftp

我在尝试使用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秒)。

我事先感谢所有帮助我的人。

此致

3 个答案:

答案 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);