通过Java将大文件传输到远程服务器的最可靠方法?

时间:2011-02-16 18:24:14

标签: java upload ftp transfer

我正在构建一个Java应用程序,它允许我们的用户加载文件列表并将这些文件传输到我们的服务器进行视频编码。我已经构建了一个用于在文件传输之前和之后管理文件的API,但我需要确定一个好的传输协议来实际移动文件。

现在我倾向于使用 Apache Commons Net (请参阅:http://commons.apache.org/net/)软件包以及 FTP 来从客户端计算机移动文件到服务器。在那里,我将使用安全的API调用将文件移动到他们需要去的地方。

这是最好的路线吗?有没有更好的方法来可靠地传输大型(1 GB +)文件?有没有办法使用这种方法恢复破碎的下载?我想避免传统的HTTP POST请求,因为它们不可靠,无法恢复损坏的上传。

谢谢!

2 个答案:

答案 0 :(得分:2)

您没有提及使用Amazon S3是否适用于您的解决方案,但它们确实提供了本机部分上传支持。基本工作流程是:

  1. 创建上传占位符并按住回复键
  2. 上传块 - 可以并发并根据需要重试
  3. 使用响应键将块组合成一个文件
  4. Their SDK提供内置文件切片和块上传。

    即使S3不是最终位置,您也可以使用S3作为上传手持笔,并在方便时下载文件以进行永久存储。

答案 1 :(得分:0)

您对HTTP帖子的理解并不完全正确。 HTTP标准不会将范围请求限制为仅GET方法 - 也可以将它们与POST或PUT一起使用。

此外,如果您可以控制客户端和服务器端脚本,则可以将数据块和StartAt位置作为单独的参数发布。在服务器上,检查参数并将接收的数据附加到指定位置。