1. response. transmitfile (filename );
/*
Microsoft provides a new transmitfile method for the response object to solve the problem of using response. binarywrite
When a file with more than Mbit/s is downloaded, The aspnet_wp.exe process cannot be recycled.
CodeAs follows:
*/
Response. contenttype = "application/X-zip-compressed ";
Response. addheader ("content-disposition", "attachment?filename=z.zip ");
String filename = server. mappath ("download/z.zip ");
Response. transmitfile (filename );
2. response. writefile (filename );
String filename = "asd.txt"; // file name saved by the client
String filepath = server. mappath ("download/aaa.txt"); // path
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 ();
3. response. writefile (filename); multipart download
String filename = "aaa.txt"; // file name saved by the client
String filepath = server. mappath ("download/aaa.txt"); // path
System. Io. fileinfo = new system. Io. fileinfo (filepath );
If (fileinfo. exists = true)
{
Const long chunksize = 102400; // 100 k reads only 100 k each time, which can relieve the pressure on the server
Byte [] buffer = new byte [chunksize];
Response. Clear ();
System. Io. filestream istream = system. Io. file. openread (filepath );
Long datalengthtoread = istream. length; // obtain 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 ();
}
4. Stream Mode
string filename = "aaa.txt"; // file name saved by the client
string filepath = server. mappath ("download/aaa.txt"); // path
// download the file as a response stream
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";
// notify the browser to download the file instead of opening
response. addheader ("content-disposition", "attachment; filename =" + httputility. urlencode (filename, system. text. encoding. utf8);
response. binarywrite (bytes);
response. flush ();
response. end ();