ASP.NET提供文件下载函数
2008-09-14 10:28
465 查看
以下为代码片段:
调用例
//输出硬盘文件,提供下载支持大文件、续传、速度限制、资源占用小 //输入参数_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; } |
Page.Response.Clear(); boolsuccess=ResponseFile(Page.Request,Page.Response,"filename",@"C:/download.date",1024000); if(!success) Response.Write("下载文件出错!"); Page.Response.End(); |
相关文章推荐
- (摘录)ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- ASP.NET提供文件下载函数
- ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- 收藏:ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小) (转自: Arhrun)
- 收藏:ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- ASP.NET提供文件下载函数
- ASP.NET提供文件下载函数
- ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- ASP.NET提供文件下载函数
- ASP.NET提供文件下载函数
- ASP.NET提供文件下载函数
- [转]ASP.NET提供文件下载函数
- ASP.NET提供文件下载函数
- ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小)
- 收藏:ASP.NET提供文件下载函数(支持大文件、续传、速度限制、资源占用小) (转自: Arhrun)
- ASP.NET提供文件下载函数