【问题标题】:resume uploads using HTTP?使用 HTTP 恢复上传?
【发布时间】:2010-12-22 06:07:51
【问题描述】:

是否可以使用 HTTP Post 恢复中断的上传?我正在开发一个将多个文件上传到 HTTP 服务器的项目。谢谢。

【问题讨论】:

    标签: http post upload


    【解决方案1】:

    假设您对该项目的客户端和服务器端都拥有足够低的控制权,您可以通过发送数据的 POST(或 PUT)请求中的 Content-Range 标头来实现这一点。

    【讨论】:

    • 除了 RFC 2616 没有定义如何在客户端请求中发送部分内容,仅在服务器响应中。例如,如果客户端请求必须通过 HTTP 代理,如果部分上传,则上传的数据可能无法正常工作。最好使用 FTP 而不是 HTTP 进行部分文件传输。
    • RFC 的第 9.6 节 (PUT) 包含这句话:“实体的接收者不得忽略任何它不理解或不实现且必须返回的 Content-*(例如 Content-Range)标头在这种情况下会发出 501(未实施)响应。”对我来说,这意味着代理需要通过该标头,不是吗?无论如何,这个想法是因为 mod_dav 支持 PUT 中的范围正是为了这个目的。
    • 感谢您的回复!我现在通过 multipart/form-data 上传文件,我可以使用 Content-Range 标头吗?我还发现了一个叫做 multipart/byteranges 的东西,我应该用它来恢复上传吗?
    • 我很惊讶他们没有为此标准化一些协议!
    【解决方案2】:

    是的,但您似乎必须使用 HTML5 文件 API 将文件切成块:http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-slicing-files

    【讨论】:

      【解决方案3】:

      更多信息会很有用

      最简单的方法是使用http://resumablejs.com

      “HTML5 文件 API 将文件分割成块”(正如 Timmmm 所说)


      顺便说一句 - FTP 也可以做到这一点,但它可能被禁用 例如。在 ProFTP 中,默认情况下它是禁用的,一个常见的错误是没有启用它;),你需要添加

      AllowStoreRestart on
      

      到你的proftpd.conf

      【讨论】:

        猜你喜欢
        • 2012-03-24
        • 1970-01-01
        • 2014-01-24
        • 1970-01-01
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 2018-08-04
        相关资源
        最近更新 更多