【问题标题】:Content-Range header and resumable uploadsContent-Range 标头和可恢复上传
【发布时间】:2012-03-21 16:24:00
【问题描述】:

我正在尝试做与这个问题的提问者类似的事情。

Uploading big files over HTTP

我想实施 Ryan 建议的 WebDav 方法,但在服务器后端遇到问题。我正在尝试对大文件进行 Http PUT 和命令行卷曲,希望稍后中断上传并恢复,但是当传输中断时,我部分上传的文件总是被删除。我是否在某处缺少 Apache 设置?

这是我正在测试的 curl 命令:

curl -v -u test:test -C - -T 2gb.test http://my.server.net/webdav/

我已尝试测试 206 响应,这显然是任何支持此功能的服务器所必需的响应。有人可以确认吗?我收到了来自以下 curl 调用的 200 条回复:

curl -v --header "range: bytes=0-999" -X HEAD -u test:test http://my.server.net/webdav/

【问题讨论】:

    标签: c# apache curl webdav


    【解决方案1】:

    在 webDAV 方面,Julian 看起来比我更有权威。但根据我的经验,PUT 确实支持 Content-Range,只要服务器实现它(Apache mod_dav 就是这样做的)。webDAV 规范似乎没有指明一种或另一种方式(http://asg.andrew.cmu。 edu/rfc/rfc2518.html#sec-8.7)和 HTTP 1.1 规范不需要,但确实允许 PUT 请求中的内容范围:(http://asg.andrew.cmu.edu/rfc/rfc2068.html #sec-9.6)。也就是说,HTTP PATCH 可能是更好的处理方式。不过,我从未将 PATCH 用于非文本数据。

    不过,看看 mod_dav 代码,如果上传失败,它似乎会自动清理文件,所以我在您链接到的帖子中的建议不太奏效。

    一种可能的(虽然有点笨拙)的解决方法是一次上传一个文件块。失败后,使用上一次成功后的块重新开始上传。

    【讨论】:

      【解决方案2】:

      Content-Range 不适用于 PUT。

      正确的做法是为“附加二进制”定义一个媒体类型,并将其与 HTTP PATCH 一起使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-17
        • 2019-03-04
        • 1970-01-01
        • 1970-01-01
        • 2014-06-08
        • 2013-03-05
        • 2018-04-25
        • 2012-07-01
        相关资源
        最近更新 更多