首页 新闻 会员 周边 捐助

C#用HTTP方式实现断点上传(非下载)大文件的思路

0
悬赏园豆:20 [已关闭问题] 关闭于 2018-02-26 09:38

由于最近工作需要,需要实现一个http方式的断点上传。

目前已经实现了非断点的上传功能:大致代码如下伪代码
//建立HttpWebRequest 对象
HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uri)
//设置相关属性
webrequest.Method = "POST";
webrequest.ContentType = "..."
..等等
//定义请求流
Stream postStream = httpReq.GetRequestStream();
将表头、文件流和文件尾写入postStream.write(...)
最后获取服务器端的响应
WebResponse webRespon = httpReq.GetResponse();
Stream s = webRespon.GetResponseStream();
StreamReader sr = new StreamReader(s);

现在要实现断点上传,基本思路是:将文件流“分割”,每次上传一部分,循环处理。

因为没有研究过网络编程,规则不是很清楚;实现这样的断点是否需要服务器相关程序进行的响应支持?

还是HttpWebRequest 方法有响应的断点设置?我如何获取每次上传的进度,续传时候相关的报告头和报告尾是否需要一致,是否有特殊的属性需要设置等等?

还想请经验丰富的朋友给出一些指导思想。感谢

PS:还想请教下,网络编程这方面的知识学习从何入手,也希望给出一些指导意见。

百里景云的主页 百里景云 | 初学一级 | 园豆:106
提问于:2018-01-10 14:12
< >
分享
所有回答(2)
0

断点上传需要服务器的支持,先请求服务器查询当前文件已上传的字节数。

比如上传块大小为1M,使用文件md5值查询已上传大小,服务器返回10M,

然后在从已上传完成的地方开始读取上传。(从11M开始上传)

czd890 | 园豆:14488 (专家六级) | 2018-01-10 14:40
0

断点续传需要服务器支持,建议你看下HTTP header头部的讲解

梦里的畅泳 | 园豆:159 (初学一级) | 2018-01-10 17:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册