HTTP部分上载、恢复上载的标准方法
我正在开发http客户机/服务器框架,并寻找处理部分上载的正确方法(与使用带有范围标头的GET方法进行下载相同) 但是,HTTP PUT不打算恢复。 正如我所知,补丁方法不接受范围标头 有没有办法通过HTTP标准(不使用扩展头等)来处理这个问题HTTP部分上载、恢复上载的标准方法,http,upload,Http,Upload,我正在开发http客户机/服务器框架,并寻找处理部分上载的正确方法(与使用带有范围标头的GET方法进行下载相同) 但是,HTTP PUT不打算恢复。 正如我所知,补丁方法不接受范围标头 有没有办法通过HTTP标准(不使用扩展头等)来处理这个问题 提前感谢。我认为部分上传没有标准: 请求内的内容范围在(http)中没有明确禁止,但该措辞也将其称为响应头,用于响应范围请求 虽然您可以使用补丁方法更新现有资源(例如添加更多字节),但这与部分上载不同,因为不完整的资源始终可用 如果你看一下Dropb
提前感谢。我认为部分上传没有标准:
- 请求内的内容范围在(http)中没有明确禁止,但该措辞也将其称为响应头,用于响应范围请求
- 虽然您可以使用补丁方法更新现有资源(例如添加更多字节),但这与部分上载不同,因为不完整的资源始终可用
- 一种解决不完整上传的方法。正常的URL地址是一个完整的,而不是一个部分资源,我知道没有部分资源的标准
- 找到上传当前状态的一种方法,也可以检查部件的总和,以确保本地文件没有更改。这可以由WebDAV PROPFIND方法提供(一旦您能够解决不完整的资源:)
- 一种上传区块的方法。在这里,可以使用带有内容范围标题的补丁。mod_dav似乎允许使用内容范围标题进行PUT(请参阅)
- 一种在资源完成后发布它的方法,或者一种预先定义完成意味着什么的方法(例如资源大小、校验和…)
另一个需要考虑的问题是,内容类型应该表示正在传输的内容,而不是实体作为一个整体的内容类型(RFC在这方面给出了一些示例)。对于以任意块“修补”的内容,这意味着应用程序/八位字节流,尽管在某些情况下,客户端和服务器可能更了解内容,并选择将修补程序作为具有更具体定义的实体发送(例如,多页图像格式的单页).使用范围xxxx-yyy标头或范围xxxx-header和PUT更新文件的一部分。它由Apache支持
不要被RFC 7231中不能使用内容范围的语句所迷惑。这是为了防止客户端从服务器接收头并使用PUT将其发送回服务器,从而造成不良后果。此注意事项与partials put问题无关。对于可恢复上载,补丁是一种合理的选择方法:它需要一种指示如何更改目标资源的媒体类型。虽然没有明确定义为执行修补的格式,但指定了字节范围和该范围的内容,使其适合于为修补有效负载定义 例如:
PATCH /document HTTP/1.1
Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES
--THIS_STRING_SEPARATES
Content-Type: text/plain
Content-Range: bytes 10-21/22
1234567890
--THIS_STRING_SEPARATES--
本例以10字节的偏移量上载12个字节
此字符串是用户选择的任意分隔符,应随机生成。为了简洁起见,省略了一些标题,每行都以␍␊. 请参阅中@btimby的答案。感谢您的评论。我看到了关于差异的问题和答案。但是,对于部分PUT还不清楚,因为一些RFC说带有PUT的内容范围标头是不可接受的。关于补丁方法,我没有看到任何关于使用Content Range的信息。规范没有禁止它,但是你必须查阅服务器手册,了解它是否实现了它。您可能需要根据服务器软件和版本编写自定义代码或配置。我正在从头编写http客户端和服务器。当然,我可以使用一些非标准的扩展,但是如果有一种标准的方法,那么最好使用它。然后解释一下你想做什么。如果你想让你的客户机支持它,你必须知道服务器是如何实现它的。您的实际问题是“如何使用内容范围
标题检测HTTP服务器支持部分上传”?如果您希望您的服务器支持它,只需实现它。HTTP规范现在不幸地禁止显式地为PUT请求使用Contant Range头,这将是最简单的