【发布时间】:2011-02-27 19:48:42
【问题描述】:
应用程序很简单,是一个发布到 Perl 脚本的 HTML 表单。问题是我们有时让我们的客户上传非常大的文件(> 500mb),他们的互联网连接有时可能不可靠。
有什么方法可以像在 WinSCP 中那样恢复失败的传输,还是如果没有客户端支持就无法完成?
【问题讨论】:
应用程序很简单,是一个发布到 Perl 脚本的 HTML 表单。问题是我们有时让我们的客户上传非常大的文件(> 500mb),他们的互联网连接有时可能不可靠。
有什么方法可以像在 WinSCP 中那样恢复失败的传输,还是如果没有客户端支持就无法完成?
【问题讨论】:
AFAIK,它必须得到客户端的支持。基本上,客户端和服务器需要协商文件的哪些部分(可能定义为“multipart/form-data”POST中的部分)已经上传,然后服务器代码需要能够将新上传的数据与现有的。
最好的解决方案是使用自定义上传器代码,通常用 Java 实现,但我认为这在 Flash 中也是可能的。您甚至可以通过 JavaScript 做到这一点 - 请参阅下面的 2 部分示例
以下是 Google 如何使用 YouTube 的示例:http://code.google.com/apis/youtube/2.0/developers_guide_protocol_resumable_uploads.html
它使用“308 Resume Incomplete”HTTP 响应,从服务器发送 range: bytes=0-408 标头以指示已上传的内容。
有关该主题的其他想法:
【讨论】:
很遗憾您的客户不能使用 ftp 上传,因为这已经包含了类似的功能。 HTTP 中还有“分块传输编码”。我不知道哪些 Perl 模块可能已经支持它。
【讨论】: