Chinaunix首页 | 论坛 | 博客
  • 博客访问: 165779
  • 博文数量: 36
  • 博客积分: 2160
  • 博客等级: 大尉
  • 技术积分: 382
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 01:48
个人简介

喝喝咖啡,做做开发

文章分类
文章存档

2014年(4)

2013年(1)

2012年(4)

2011年(2)

2010年(3)

2009年(9)

2008年(3)

2007年(10)

我的朋友

分类: 嵌入式

2007-08-30 16:48:20

获取web下载文件的大小
作者:山东人在成都
    从WEB上下载文件,可以利用WebClient的OpenRead方法打开一个网络流,传给一个Stream, Stream不断往缓冲区里读取数据,并利用FileStream进行持续写入.
    遇到的难点,就是在下载前,需要提前知道文件的尺寸大小,不然,不太好判断何时下载完成.如果用读取到的流长度与buffer的长度比较来判断,是下载几K的数据的,因为由于网络的原因,传输过来的流数据,经常会小于buffer的长度;如果用读取到的流长度是不是等于0来判断,也会由于网络原因一时传不到数据,而等于0.
    因此,就需要在下载前获取需下载文件的大小,如果使用Stream的Length属性,是不行的,会报出"此流不支持查找操作"的错误.
    使用.Net中的HttpWebRequest类和HttpWebResponse类,相结合,则可以获取欲下载文件的大小.

private static long GetLength(string uri)
{
 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
 HttpWebResponse res = (HttpWebResponse)req.GetResponse();
 long len = res.ContentLength;
 res.Close();
 return len;
}

阅读(5148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~