我正在开发一个允许通过HTTP PUT上传大文件(GB +)的项目,我需要实现一种恢复上传的方法。文件上传完成后,文件已完成,无法修改。到目前为止,我有两个选项,但两者都不完美:
选项1
客户端在文件上发送一个初始HEAD请求,如果该文件不存在,则返回404或包含当前大小的文件详细信息以及X-Can-Resume
之类的HTTP X-Header或类似的内容指定文件是否可以恢复,以及Range
标头指定它具有哪些字节。这似乎没问题,但我不喜欢X-Header,因为它从HTTP标准中删除。
选项2
客户端发送一个PUT请求,其Content-Length
标头为0字节且没有正文,然后服务器可以发送回308 Resume Incomplete
(如此处http://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal所提议的)或{{1}标头,表示是从头开始还是从头开始。除了使用非标准标题外,这似乎也是可以接受的。
有关实施此方法的最佳方法的其他建议吗?
谢谢, Ĵ
答案 0 :(得分:0)
在任何一种解决方案中都没有现有的客户端和服务器实现,所以我猜你们都会编码。我认为你应该在齿轮提案中描述的最简单和最简单的方法之间找到一个合适的平衡(顺便说一下,你可能知道Gears已经死了),并准备好在标准出现时进行改变。
如果我要实现此功能,我可以让客户端以块的形式上传,我会在整个内容和块上添加消息摘要。