您的位置:首页 > 编程语言 > ASP

ASP.NET文件下载的几种方法

2007-03-29 14:46 746 查看
当服务器要提供文件下载时,HttpResponse有这么几种方法可以使用。
1)用Response.WriteFile,如:

Response.ContentType = "application/octet-stream";
Response.WriteFile(@"whatever.zip");

2) 采用aspnet2.0的新方法 Response.TransmitFile,注意此方法将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。如:

Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("Content-Disposition", "attachment;filename=downloadfilename.zip");
Response.TransmitFile(@"whatever.zip");

(假设同文件夹下有个需要下载的文件叫whatever.zip,而用户下载时默认名称为downloadfilename.zip)
3)需要注意的是,我们都知道Server.ScriptTimeout 的默认值是90秒,而当我们在web.config中打开调试模式,此值变为30,000,000秒。这也是为什么我在开发时一般不会发现超时问题。当下载大文件时,用Response.WriteFile会使Aspnet_wp.exe缓存了太大空间而导致下载失败。
这时建议采用文件流形式。如:

System.IO.Stream iStream = null;

//以10K为单位缓存:
byte[] buffer = new Byte[10000];

int length;

long dataToRead;

// 制定文件路径.
string filepath = @"D:\mybigfile.zip";

// 得到文件名.
string filename = System.IO.Path.GetFileName(filepath);

try
catch (Exception ex)
finally
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: