protected void Button1_Click (object sender, EventArgs e)
{
/*
Microsoft provides a new approach to response objects TransmitFile to address the use of Response.BinaryWrite
An issue that caused the Aspnet_wp.exe process to be recycled and could not be downloaded successfully when downloading more than 400MB files.
The code is as follows:
*/
Response.ContentType = "application/x-zip-compressed";
Response.AddHeader ("Content-disposition", "Attachment;filename=z.zip");
string filename = Server.MapPath ("Download/aaa.zip");
Response.TransmitFile (filename);
}
WriteFile Implementation Download
protected void button2_click (object sender, EventArgs e)
{
/*
Using System.IO;
*/
string filename = "Aaa.zip";//file name saved by the client
String Filepath=server.mappath ("Download/aaa.zip");//path
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 Sub-block download
protected void Button3_Click (object sender, EventArgs e)
{
string filename = "Aaa.zip";//file name saved by the client
String filePath = Server.MapPath ("Download/aaa.zip");//path
System.IO.FileInfo FileInfo = new System.IO.FileInfo (FilePath);
if (fileinfo.exists = = True)
{
Const LONG ChunkSize = 102400;//100k reads the file each time, only reads 100K, this can alleviate the pressure of the server
byte[] buffer = new Byte[chunksize];
Response.Clear ();
System.IO.FileStream IStream = System.IO.File.OpenRead (FilePath);
Long Datalengthtoread = istream.length;//Gets the total size of the downloaded file
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));//Read size
Response.OutputStream.Write (buffer, 0, lengthread);
Response.Flush ();
Datalengthtoread = Datalengthtoread-lengthread;
}
Response.close ();
}
}
Stream mode Download
protected void Button4_Click (object sender, EventArgs e)
{
string filename = "Aaa.zip";//file name saved by the client
String filePath = Server.MapPath ("Download/aaa.zip");//path
Download a file as a stream of characters
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";
Notifies the browser to download a file instead of opening it
Response.AddHeader ("Content-disposition", "attachment; Filename= "+ httputility.urlencode (FileName, System.Text.Encoding.UTF8));
Response.BinaryWrite (bytes);
Response.Flush ();
Response.End ();
}
ASP. Several ways to download files