Content Range标头和可恢复的上载

本文关键字:可恢复 上载 Range Content | 更新日期: 2023-09-27 18:28:37

我正试图做一些类似于这个问题的提问者的事情。

通过HTTP 上传大文件

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

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

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

我尝试过测试206响应,这显然是任何支持此功能的服务器所必需的响应。有人能确认一下吗?我收到了以下卷曲电话的200条回复:

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

Content Range标头和可恢复的上载

Julian在webDAV方面看起来比我更有权威。但根据我的经验,PUT确实支持Content Range,只要服务器实现它(Apache mod_dav就是这样做的)(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代码,如果上传失败,它似乎会自动清理文件,所以我在你链接的帖子中的建议不太管用。

一个可能的解决方案(尽管有点麻烦)是一次上传一个文件块。一旦失败,请在最后一个成功的区块之后重新开始上传。

Content Range不适用于PUT。

在这里,正确的做法是为"appendbinary"定义一个媒体类型,并将其与HTTPPATCH一起使用。