C#中使用HttpDownLoadHelper下载文件实例
本文实例讲述了C#使用HttpDownLoadHelper下载文件的方法。分享给大家供大家参考。具体实现方法如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Web; usingSystem.IO; usingSystem.Threading;
namespaceProjectWenDangManage.Framework { ///<summary> ///HTTP文件下载辅助类 ///</summary> publicclassHttpDownLoadHelper { ///<summary> ///文件下载 ///</summary> ///<paramname="_Request"></param> ///<paramname="_Response"></param> ///<paramname="_fileName">下载文件时的短文件名称</param> ///<paramname="_fullPath">待下载文件的绝对路径</param> ///<paramname="_speed">下载速度</param> ///<returns></returns> publicstaticboolResponseFile(HttpRequest_Request,HttpResponse_Response,string_fileName,string_fullPath,long_speed) { try { FileStreammyFile=newFileStream(_fullPath,FileMode.Open,FileAccess.Read,FileShare.ReadWrite); BinaryReaderbr=newBinaryReader(myFile); try { _Response.AddHeader("Accept-Ranges","bytes"); _Response.Buffer=false; longfileLength=myFile.Length; longstartBytes=0;
doublepack=10240;//10Kbytes //intsleep=200; //每秒5次 即5*10Kbytes每秒 intsleep=(int)Math.Floor(1000*pack/_speed)+1; if(_Request.Headers["Range"]!=null) { _Response.StatusCode=206; string[]range=_Request.Headers["Range"].Split(newchar[]{'=','-'}); startBytes=Convert.ToInt64(range[1]); } _Response.AddHeader("Content-Length",(fileLength-startBytes).ToString()); if(startBytes!=0) { //Response.AddHeader("Content-Range",string.Format("bytes{0}-{1}/{2}",startBytes,fileLength-1,fileLength)); } _Response.AddHeader("Connection","Keep-Alive"); _Response.ContentType="application/octet-stream"; _Response.AddHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(_fileName,System.Text.Encoding.UTF8));
br.BaseStream.Seek(startBytes,SeekOrigin.Begin); intmaxCount=(int)Math.Floor((fileLength-startBytes)/pack)+1;
for(inti=0;i<maxCount;i++) { if(_Response.IsClientConnected) { _Response.BinaryWrite(br.ReadBytes(int.Parse(pack.ToString()))); Thread.Sleep(sleep); } else { i=maxCount; } } returntrue; } catch { returnfalse; } finally { br.Close();
myFile.Close(); } } catch { returnfalse; } } } }
HttpDownLoadHelper