日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

asp.net下载的三种方式

發布時間:2023/11/29 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net下载的三种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Code
?protected?void?Button1_Click(object?sender,?EventArgs?e)
?????{
????????
/*
??????????微軟為Response對象提供了一個新的方法TransmitFile來解決使用Response.BinaryWrite
??????????下載超過400mb的文件時導致Aspnet_wp.exe進程回收而無法成功下載的問題。
??????????代碼如下:
?????????
*/

?????????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實現下載
????protected?void?Button2_Click(object?sender,?EventArgs?e)
?????{
????????
/*
??????????using?System.IO;
?????????
?????????
*/

????????
string?fileName?="aaa.zip";//客戶端保存的文件名
????????string?filePath=Server.MapPath("DownLoad/aaa.zip");//路徑

?????????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.zip";//客戶端保存的文件名
????????string?filePath?=?Server.MapPath("DownLoad/aaa.zip");//路徑

?????????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.zip";//客戶端保存的文件名
????????string?filePath?=?Server.MapPath("DownLoad/aaa.zip");//路徑

????????
//以字符流的形式下載文件
?????????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();

?????}

轉載于:https://www.cnblogs.com/jame-peng1028/archive/2008/08/26/1276277.html

總結

以上是生活随笔為你收集整理的asp.net下载的三种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。