Asp.net怎样实现断点续传

文靜木木 2011-02-21 06:08:31
在文件下载时,我想使用断点续传,实现将上次未下载完成的文件继续下载。代码如何实现次功能?
...全文
72 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
文靜木木 2011-02-22
  • 打赏
  • 举报
回复
谢谢各位 问题已经解决 结账啦
wuyq11 2011-02-21
  • 打赏
  • 举报
回复
断点续传指CLIENT可从SERVER的数据段中指定的位置开始下载数据
如果要自定义类似的协议,只需要在传输数据时,可以指定位置要求SERVER发送即可

把文件分割成块,每次只是传递一个文件块。
一个文件可以起多个发送任务(线程),同时发送。
记录文件发送状态,在网络出现问题时(或者客户端意外终止),知道上次发送文件大小和位置指针。再重新链接以后,继续发送。
http://www.codeproject.com/KB/IP/MyDownloader.aspx
http://topic.csdn.net/u/20090111/09/d045db27-a2ff-43ae-9c44-7618931be0a6.html
子夜__ 2011-02-21
  • 打赏
  • 举报
回复
static void Main(string[] args)

{



string StrFileName="c:\\aa.zip"; //根据实际情况设置

string StrUrl="http://www.xxxx.cn/xxxxx.zip"; //根据实际情况设置

//打开上次下载的文件或新建文件

long lStartPos =0;

System.IO.FileStream fs;

if (System.IO.File.Exists(StrFileName))

{

fs= System.IO.File.OpenWrite(StrFileName);

lStartPos=fs.Length;

fs.Seek(lStartPos,System.IO.SeekOrigin.Current); //移动文件流中的当前指针

}

else

{

fs = new System.IO.FileStream(StrFileName,System.IO.FileMode.Create);

lStartPos =0;

}



//打开网络连接

try

{

System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUrl);

if ( lStartPos>0)

request.AddRange((int)lStartPos); //设置Range值



//向服务器请求,获得服务器回应数据流

System.IO.Stream ns= request.GetResponse().GetResponseStream();

byte[] nbytes = new byte[512];

int nReadSize=0;

nReadSize=ns.Read(nbytes,0,512);

while( nReadSize >0)

{

fs.Write(nbytes,0,nReadSize);

nReadSize=ns.Read(nbytes,0,512);

}

fs.Close();

ns.Close();

Console.WriteLine("下载完成");

}

catch(Exception ex)

{

fs.Close();

Console.WriteLine("下载过程中出现错误:"+ex.ToString());

}

}


原文参考


参考
windy19871011 2011-02-21
  • 打赏
  • 举报
回复
宝_爸 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fengqingtao2008 的回复:]

http://www.cnblogs.com/bestcomy/archive/2004/08/10/31950.aspx
供LZ参考。
[/Quote]

学习了。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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