博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wp7 断点续传
阅读量:6595 次
发布时间:2019-06-24

本文共 1846 字,大约阅读时间需要 6 分钟。

断点续传其实就是在请求流的时候请求中间流,而不是每次重新从头来过 

HttpWebRequest Myrq = (HttpWebRequest)HttpWebRequest.CreateHttp(URL);

Myrq.Headers["Range"] = "bytes=1024-";//设置Range值

这句就是请求1024位置开始到末尾的流 

如果Myrq.Headers["Range"] = "bytes=1024-2048"; 
则表示请求1024到2048位置的数据  
有了这个方法,写断点续传就会简单许多了,错略的方法如下 

 

public

void DownFile(string URL, string Filename, ProgressBar Prog)
{
//打开上次下载的文件或新建文件
long lStartPos = 0;
IsolatedStorageFileStream fs;
if (IsolatedStorageFile.GetUserStoreForApplication().FileExists(Filename))
{
fs = IsolatedStorageFile.GetUserStoreForApplication().OpenFile(Filename, FileMode.Open);
lStartPos = fs.Length;
fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针
}
else
{
fs = IsolatedStorageFile.GetUserStoreForApplication().CreateFile(Filename);
lStartPos = 0;
}

try

{
HttpWebRequest Myrq = (HttpWebRequest)HttpWebRequest.CreateHttp(URL);
Myrq.Headers["User-Agent"] = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)”;
if (lStartPos > 0)
{
Myrq.Headers["Range"] = “bytes=” + lStartPos + “-”;//设置Range值
}
Myrq.BeginGetResponse(new
AsyncCallback((a) =>
{
var myrp = Myrq.EndGetResponse(a);
long totalBytes = myrp.ContentLength + fs.Length;
this.Dispatcher.BeginInvoke(() => { Prog.Maximum = (int)totalBytes; });
Stream st = myrp.GetResponseStream();
//Stream so = new FileStream(Filename, FileMode.Create);
long totalDownloadedByte = fs.Length;
byte[] by = new
byte[1024];
int osize = st.Read(by, 0, (int)by.Length);
while (osize > 0)
{
totalDownloadedByte = osize + totalDownloadedByte;
fs.Write(by, 0, osize);
this.Dispatcher.BeginInvoke(() => { Prog.Value = (int)totalDownloadedByte; });
osize = st.Read(by, 0, (int)by.Length);
}
fs.Close();
st.Close();
MessageBox.Show(“下载完毕!”);
}), null);
}
catch (Exception ex)
{
MessageBox.Show(“提示“ + ex.Message);
}
}

 

转载于:https://www.cnblogs.com/win-and-first/archive/2012/07/04/2576707.html

你可能感兴趣的文章
HTTP POST GET 本质区别详解
查看>>
正则表达式 之 C#后台应用
查看>>
对称加密与非对称加密
查看>>
OC Copy基本使用(深拷贝和浅拷贝)
查看>>
老舍:有了小孩以后,才知道一切事情没那么简单
查看>>
SpringBoot参数校验
查看>>
03Go 类型总结
查看>>
PHP To Go 转型手记 (二)
查看>>
新造了一个管理模板代码的工具 -- Pharah
查看>>
一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)
查看>>
通用Windows平台应用程序开始恢复Win32功能
查看>>
Airbnb如何简化1000多位工程师的Kubernetes工作流程?
查看>>
Scrum Master的成功定义是什么?
查看>>
Windows Server入门系列37 创建网络共享
查看>>
自己diy封装xp操作系统
查看>>
veritas升级及备份至磁盘两个问题简要说明
查看>>
Scoket:UDP通讯模型
查看>>
扯点关于经济的淡-贸易顺差都是有利的吗
查看>>
国产IT厂商激辩微软 微软反垄断调查或有突破
查看>>
《进化——我们在互联网上奋斗的故事》一一1.4 从精兵到强将 ——技术人员的职场发展之路...
查看>>