使用HttpDownLoadHelper下载文件

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.IO;usingSystem.Threading;namespacePRojectWenDangManage.Framework

{///<summary>///HTTP文件下载辅助类///</summary>publicclassHttpDownLoadHelper

{///<summary>///文件下载///</summary>///<param name="_Request"></param>///<param name="_Response"></param>///<param name="_fileName">下载文件时的短文件名称</param>///<param name="_fullPath">待下载文件的绝对路径</param>///<param name="_speed">下载速度</param>///<returns></returns>publicstaticboolResponseFile(HttpRequest _Request, HttpResponse _Response,string_fileName,string_fullPath,long_speed)

{try{

FileStream myFile=newFileStream(_fullPath, FileMode.Open, Fileaccess.Read, FileShare.ReadWrite);

BinaryReader br=newBinaryReader(myFile);try{

_Response.AddHeader("Accept-Ranges","bytes");

_Response.Buffer=false;longfileLength =myFile.Length;longstartBytes =0;doublepack =10240;//10K bytes//int sleep = 200;//每秒5次 即5*10K bytes每秒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

在webfrom中

stringfilePath=Path.Combine(HttpRuntime.AppDomainAppPath,"Files","项目管理工具.msi");

HttpDownLoadHelper.ResponseFile(Request, Response,"下载显示的名称", filePath,102400);

在mvc中

stringfilePath=Path.Combine(HttpRuntime.AppDomainAppPath,"Files","项目管理工具.msi");

HttpDownLoadHelper.ResponseFile(HttpContext.ApplicationInstance.Context.Request, HttpContext.ApplicationInstance.Context.Response,"下载显示的名称", filePath,102400);

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航