C # Response Download

Source: Internet
Author: User

//TransmitFile实现下载 

     protected void Button1_Click( object sender, EventArgs e)                /*           微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite           下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。           代码如下:           */             Response.ContentType =  "application/x-zip-compressed"          string FileName =  "test.doc"          //使用UTF-8对文件名进行编码           Response.AppendHeader( "Content-Disposition" "attachment;filename=\"" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) +  "\"" );           Response.ContentType =  "application/octet-stream"          Response.AddHeader( "Content-Disposition" "attachment;filename=" + FileName);           string filename = Server.MapPath( "../ReportTemplate/test.doc" );           Response.TransmitFile(filename);               //WriteFile实现下载       protected void Button2_Click( object sender, EventArgs e)                 /*           using System.IO;                    */          string fileName =  "test.doc" ; //客户端保存的文件名           string filePath = Server.MapPath( "../ReportTemplate/test.doc" ); //路径           FileInfo fileInfo =  new FileInfo(filePath);           Response.Clear();           Response.ClearContent();           Response.ClearHeaders();           Response.AddHeader( "Content-Disposition" "attachment;filename=\"" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) +  "\"" );           Response.AddHeader( "Content-Length" , fileInfo.Length.ToString());           Response.AddHeader( "Content-Transfer-Encoding" "binary" );           Response.ContentType =  "application/octet-stream"          Response.WriteFile(fileInfo.FullName);           Response.Flush();           Response.End();               //WriteFile分块下载       protected void Button3_Click( object sender, EventArgs e)                string fileName =  "test.doc" ; //客户端保存的文件名           string filePath = Server.MapPath( "../ReportTemplate/test.doc" ); //路径                 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, System.Text.Encoding.UTF8));               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 =  "test.doc" ; //客户端保存的文件名           string filePath = Server.MapPath( "../ReportTemplate/test.doc" ); //路径              //以字符流的形式下载文件           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();       }

C # Response Download

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.