欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.NET提供文件下载函数】,下面是详细的分享!
ASP.NET提供文件下载函数
//输出硬盘文件,提供下载支持大文件、续传、速度限制、资源占用小
//输入参数_Request:Page.Request对象,_Response:Page.Response对象,_fileName:下载文件名,_fullPath:带文件名下载路径,_speed每秒允许下载的字节数
//返回是否成功
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;
intpack=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(pack));
Thread.Sleep(sleep);
}
else
{
i=maxCount;
}
}
}
catch
{
returnfalse;
}
finally
{
br.Close();
myFile.Close();
}
}
catch
{
returnfalse;
}
returntrue;
}
以上所分享的是关于ASP.NET提供文件下载函数,下面是编辑为你推荐的有价值的用户互动:
相关问题:在asp.net页面中读取数据库里的文件存放路径,提供...
答:嗯文下载很重要呀,最近两天都看见了,首先先占时间稍后补上一切。。。 呵呵经过不懈的努力终于搞定了。。。。不多说了... >>详细
相关问题:文件连接下载
答:如果可以外联的话可以直接点击,把迅雷上面url直接复制就可以了,你也可以在http://www.5144free.cn/catalog.asp?cate=3找支持外连的网盘 >>详细
相关问题:求一个自己写的ASP.NET实现文件上传的函数?参数为...
答:搜个类似的吧 文件上传这个东西挺多的了 http://pan.baidu.com/s/1bnmx9yZ 成型系统小集合。 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
