获取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) |