C# 文件下载

C# code
        
        
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; public partial class _Default : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { } // TransmitFile实现下载 protected void Button1_Click( object sender, EventArgs e) { Response.ContentType = " application/x-zip-compressed " ; Response.AddHeader( " Content-Disposition " , " attachment;filename=z.zip " ); string filename = Server.MapPath( " DownLoad/z.zip " ); Response.TransmitFile(filename); } // WriteFile实现下载 protected void Button2_Click( object sender, EventArgs e) { string fileName = " asd.txt " ; // 客户端保存的文件名 string filePath = Server.MapPath( " DownLoad/aaa.txt " ); // 路径 FileInfo fileInfo = new FileInfo(filePath); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader( " Content-Disposition " , " attachment;filename= " + fileName); Response.AddHeader( " Content-Length " , fileInfo.Length.ToString()); Response.AddHeader( " Content-Transfer-Encoding " , " binary " ); Response.ContentType = " application/octet-stream " ; Response.ContentEncoding = System.Text.Encoding.GetEncoding( " gb2312 " ); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); } // WriteFile分块下载 protected void Button3_Click( object sender, EventArgs e) { string fileName = " aaa.txt " ; // 客户端保存的文件名 string filePath = Server.MapPath( " DownLoad/aaa.txt " ); // 路径 System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); if (fileInfo.Exists == true ) { const long ChunkSize = 102400 ; // 100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 byte [] buffer = new byte [ChunkSize]; Response.Clear(); System.IO.FileStream iStream = System.IO.File.OpenRead(filePath); long dataLengthToRead = iStream.Length; // 获取下载的文件总大小 Response.ContentType = " application/octet-stream " ; Response.AddHeader( " Content-Disposition " , " attachment; filename= " + HttpUtility.UrlEncode(fileName)); while (dataLengthToRead > 0 && Response.IsClientConnected) { int lengthRead = iStream.Read(buffer, 0 , Convert.ToInt32(ChunkSize)); // 读取的大小 Response.OutputStream.Write(buffer, 0 , lengthRead); Response.Flush(); dataLengthToRead = dataLengthToRead - lengthRead; } Response.Close(); } } // 流方式下载 protected void Button4_Click( object sender, EventArgs e) { string fileName = " aaa.txt " ; // 客户端保存的文件名 string filePath = Server.MapPath( " DownLoad/aaa.txt " ); // 路径 // 以字符流的形式下载文件 FileStream fs = new FileStream(filePath, FileMode.Open); byte [] bytes = new byte [( int )fs.Length]; fs.Read(bytes, 0 , bytes.Length); fs.Close(); Response.ContentType = " application/octet-stream " ; // 通知浏览器下载文件而不是打开 Response.AddHeader( " Content-Disposition " , " attachment; filename= " + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.BinaryWrite(bytes); Response.Flush(); Response.End(); } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值