怎么实现post方式断点续传??

qq_36119745 2016-09-22 09:38:48
RT,最近在做一个上传列表的功能,本地选择一个文件上传到服务器,有进度条显示,暂停,继续上传等功能,服务器是用post请求去实现上传的,网上查了好多资料,全是下载的断点续传例子,就是在range请求头里面告诉服务器从哪里开始下载,下载到本地的文件就file->seek()告诉从哪里开始获得下载的字节, 可是上传要难一点吧?怎么告诉服务器接着上次未上传完的地方继续上传呢?有大神贴点简单代码上来吗。。。。
...全文
539 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36119745 2016-09-24
  • 打赏
  • 举报
回复
已经解决了~一般来说服务器都有2个接口,我这里是一个接口用get请求,传入filename和userid参数,然后会返回这个用户传的这个文件在服务器里已经上传的大小,知道了这个大小之后,下次用第二个接口去post请求,然后要传的文件记得文件名不要改,还是用这个文件名来传,然后file->seek(第一次请求时获得的已经上传文件大小),再在请求头里面告诉服务器从哪里开始上传就可以了~
qq_36119745 2016-09-23
  • 打赏
  • 举报
回复
引用 5 楼 dext 的回复:
这个很简单,FTP 协议就支持,可以参考。通信两次就知道了。 如果是HTTP的话,除了 通信两次,获得大小外。HTTP还有 除了 GET POST 之外的一个HEAD 方法,直接HEAD 你之前没有传完的文件,就知道大小了,总之 应该没有什么难度,就是费点事。
服务器是http协议的,现在上传的代码也是post请求写的,contentType="multipart/form-data这种类型的上传方式,构建一个表单,将文件加在表单中,传给服务器,请问通信2次怎么获得大小?获得什么的大小??这里有点看不明白~
dext 2016-09-23
  • 打赏
  • 举报
回复
这个很简单,FTP 协议就支持,可以参考。通信两次就知道了。 如果是HTTP的话,除了 通信两次,获得大小外。HTTP还有 除了 GET POST 之外的一个HEAD 方法,直接HEAD 你之前没有传完的文件,就知道大小了,总之 应该没有什么难度,就是费点事。
qq_36119745 2016-09-22
  • 打赏
  • 举报
回复
qq_36119745 2016-09-22
  • 打赏
  • 举报
回复
引用 2 楼 ggggyj 的回复:
上传要知道服务器接收到了多少,未接收的点开始续传
是啊!下载列表的断点续传容易弄,上传的时候reply有个uploadProgress()的信号,可以在这个信号的槽函数里面知道已经上传了多少的吧?然后下次继续上传时从上传文件的这个位置接着传,但是怎么告诉服务器是从上次那个文件的那个位置开始接着接受你传的文件呢??下载的话简单,直接打开上次没下载完的文件位置,然后file->seek(已经传输大小),然后在request请求头里面告诉服务器从哪个位置下载就好了,上传的话,我这边的服务器是用html表单接受的,就是contentType="multipart/form-data;这种类型上传的,post请求体里面加要上传的文件,还要上传filename这些东西,比下载要复杂(下载用get请求就行了),这种情况下如何实现断点续传?网上都是给的下载时候的断点下载的代码。。。。总而言之。。。就是再次上传时,如何让服务器知道是接着上次该文件继续上传?
诺水城子 2016-09-22
  • 打赏
  • 举报
回复
上传要知道服务器接收到了多少,未接收的点开始续传
qq_36119745 2016-09-22
  • 打赏
  • 举报
回复
来个大侠救命啊

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧