4

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

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

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

谢谢!

4

2 回答 2

2

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

  1. 创建一个上传占位符并保留响应键
  2. 上传块——可以并发并根据需要重试
  3. 使用响应键将块组合成一个文件

他们的 SDK提供内置的文件切片和块上传。

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

于 2011-02-16T21:00:22.210 回答
0

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

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

于 2011-02-16T18:39:20.277 回答