ASP.NET 简单下载的实现

简单页面下载通过Response.WriteFile()函数将指定的文件直接写入HTTP内容输出流。该方 法实现比较简单,本例中通过函数FileDownload()实现文件的下载,代码如下:

private void FileDownload(string FullFileName){
    FileInfo DownloadFile = new FileInfo(FullFileName);
    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer = false;
    Response.ContentType = “application/octet-stream”;
    Response.AppendHeader(“Content-Disposition”, “attachment;filename=” + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
    Response.AppendHeader(“Content-Length”, DownloadFile.Length.ToString());
    Response.WriteFile(DownloadFile.FullName);
    Response.Flush();
    Response.End();
}

由于在代码中使用了 FileInfo 类,必须在代码的开始引用 System.IO 空间,引用代码如下所示。
using System.IO;
FileInfo 类提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建FileStream对象。其中,Length属性用来获取当前文件的大小,FullName 属性获取目录或文件的完整目录。
FileDownload()函数实现的原理过程是,首先创建FileInfo类,通过该类获取要下载文件的信息,最后通过 WriteFile()函数下载该文件。该方法面临的问题是 WriteFile 方法使文件的二进制数据流向客户端,它是一个出名的内存占用狂,把整个文件载入服务器的RAM中来提供服务(实际上它甚至于会占用文件两倍大小的空间)。对于大文件,这会引起服务内存问题,并且可能重复ASP.NET过程。因此较大文件均使用高级下载方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值