当前位置:  开发笔记 > 编程语言 > 正文

通过HTTP上传大文件

如何解决《通过HTTP上传大文件》经验,为你挑选了1个好方法。

我需要从桌面应用程序向服务器上传可能较大的(如10英寸到100英镑的兆字节)文件.服务器代码是用PHP编写的,桌面应用程序是用C++/MFC编写的.我希望能够在上传失败一半时恢复文件上传,因为该软件将用于不可靠的连接.我有什么选择?我发现了许多用于C++的HTTP上传组件,例如http://www.chilkatsoft.com/refdoc/vcCkUploadRef.html看起来很棒,但它似乎没有处理半完成上传的'恢复'(我认为这是因为HTTP 1.1不支持它).我也看了BITS服务但是对于上传它需要一个IIS服务器.到目前为止,我唯一的选择似乎是将我想要上传的文件切换成较小的部分(比如每个1兆),将它们全部上传到服务器,用PHP重新组装它们并运行校验和以查看是否一切正常.要恢复,我需要在上传开始时进行某种形式的"握手",以找出服务器上已有的部分.我是否需要手动编写代码或者是否有人知道为我做这一切的库,或者甚至是完全不同的解决方案?一世'



1> ryan..:

我迟到了八个月,但我偶然发现了这个问题,并且对于未提及webDAV感到惊讶.您可以使用HTTP PUT方法上传,并包含一个Content-Range标头来处理恢复等.HEAD请求会告诉您文件是否已存在以及文件有多大.所以也许是这样的:

1)HEAD远程文件

2)如果它存在并且size == local size,则上传已经完成

3)如果size

4)使PUT请求上传文件(或文件的一部分,如果恢复)

5)如果在PUT请求期间连接失败,请从步骤1开始

您还可以列出(PROPFIND)和重命名(MOVE)文件,并使用dav创建目录(MKCOL).

我相信Apache和Lighttpd都有dav扩展.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有