1

尝试使用 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 秒)也需要很长时间。

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

问候,

4

3 回答 3

1

我认为这可能与文件传输模式有关。您可以将转移模式设置为二进制吗?有时,当您以 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

于 2012-08-09T07:18:01.097 回答
0

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

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

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

于 2012-08-08T21:30:52.087 回答
0

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

client.enterLocalPassiveMode()
client.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE);
client.setFileTransferMode(FTP.BINARY_FILE_TYPE);
于 2016-02-02T16:06:24.790 回答