asp.net response.ContentType 下載檔案的四種方法
protected void Button1_Click(object sender, EventArgs e)
{
1 protected void Button1_Click(object sender, EventArgs e)
2 {
3 //TransmitFile實現下載
4
5 /*
6 微軟為Response物件提供了一個新的方法TransmitFile來解決使用Response.BinaryWrite
7 下載超過400mb的檔案時導致Aspnet_wp.exe程式回收而無法成功下載的問題。
8 程式碼如下:
9 */
10
11 Response.ContentType = "application/x-zip-compressed";
12 Response.AddHeader("Content-Disposition", "attachment;filename=keji.rar");
13 string filename = Server.MapPath("keji.rar");
14 Response.TransmitFile(filename);
15 Response.Write("");
19
20 }
21 protected void Button2_Click(object sender, EventArgs e)
22 {
23
24 //WriteFile實現下載
25 string fileName = "ceshi.rar";//客戶端儲存的檔名
26 string filePath = Server.MapPath("keji.rar");//路徑
27
28 FileInfo fileInfo = new FileInfo(filePath);
29 Response.Clear();
30 Response.ClearContent();
31 Response.ClearHeaders();
32 Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
33 Response.AddHeader("Content-Length", fileInfo.Length.ToString());
34 Response.AddHeader("Content-Transfer-Encoding", "binary");
35 Response.ContentType = "application/octet-stream";
36 Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
37 Response.WriteFile(fileInfo.FullName);
38 Response.Flush();
39 Response.End();
40
41 }
42 protected void Button3_Click(object sender, EventArgs e)
43 {
44 //WriteFile分塊下載
45
46 string fileName = "GhostXP.iso";//客戶端儲存的檔名
47 string filePath = Server.MapPath("GhostXP7.7.iso");//路徑
48
49 System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
50
51 if (fileInfo.Exists == true)
52 {
53 const long ChunkSize = 409600;//100K 每次讀取檔案,只讀取100K,這樣可以緩解伺服器的壓力
54 byte[] buffer = new byte[ChunkSize];
55
56 Response.Clear();
57 System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
58 long dataLengthToRead = iStream.Length;//獲取下載的檔案總大小
59 Response.ContentType = "application/octet-stream";
60 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
61 while (dataLengthToRead > 0 && Response.IsClientConnected)
62 {
63 int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//讀取的大小
64 Response.OutputStream.Write(buffer, 0, lengthRead);
65 Response.Flush();
66 dataLengthToRead = dataLengthToRead - lengthRead;
67 }
68 Response.Close();
69 }
70 }
71
72 //字元流方式下載檔案
73 protected void Button4_Click(object sender, EventArgs e)
74 {
75 string fileName = "ce2.rar";//客戶端儲存的檔名
76 string filePath = Server.MapPath("keji.rar");//路徑
77
78 //以字元流的形式下載檔案
79 FileStream fs = new FileStream(filePath, FileMode.Open);
80 byte[] bytes = new byte[(int)fs.Length];
81 fs.Read(bytes, 0, bytes.Length);
82 fs.Close();
83 Response.ContentType = "application/octet-stream";
84 //通知瀏覽器下載檔案而不是開啟
85 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
86 Response.BinaryWrite(bytes);
87 Response.Flush();
88 Response.End();
89
90 }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-608431/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 下載檔案的15種方法
- 15種下載檔案的方法
- ASP.NET檔案下載的實用方法ASP.NET
- 下載GitHub上檔案的兩種方法Github
- python下載檔案的三種方法Python
- ASP.NET 檔案下載ASP.NET
- ASP.NET中檔案上傳下載方法集合ASP.NET
- C# 檔案下載四方法C#
- 監聽檔案修改的四種方法
- PHP-四種解析XML檔案的方法PHPXML
- ServletOutputStream在nginx轉發下輸出檔案下載的一種方法ServletNginx
- JavaScript~檔案下載的幾種方式JavaScript
- Java檔案下載的幾種方式Java
- windows下ftp定時執行批次下載檔案,windows下ftp定時執行批次下載檔案的一種方法WindowsFTP
- 淺談ASP.NET中檔案下載函式使用方法ASP.NET函式
- asp.net 檔案下載與壓縮ASP.NET
- 前端接受後端檔案流並下載的幾種方法前端後端
- Java檔案下載 幾種方式Java
- 簡談檔案下載的三種方式
- Thinkphp3.2 下載檔案的方法PHP
- shell下十二種讀檔案的方法(轉)
- 四種IT治理方法(轉載)
- 【liunx命令】上傳下載檔案的方法
- jsp下載檔案的實現方法JS
- Asp.net C# 檔案下載,附件下載程式碼案例,不顯示檔案路徑ASP.NETC#
- 收集整理的16種檔案下載的方式
- Python四種逐行讀取檔案內容的方法Python
- java實現檔案的下載的方法概述Java
- android從IIS/asp.net下載apk檔案AndroidASP.NETAPK
- ASP.NET中下載檔案ASP.NET
- iis支援.apk檔案下載的設定方法APK
- asp.net 中兩種不同方式檔案流下載的區別?ASP.NET
- ASP.NET利用HttpHandler實現多副檔名檔案下載ASP.NETHTTP
- 【ASP.NET Core】Blazor+MiniAPI完成檔案下載ASP.NETBlazorAPI
- asp.net 檔案上傳和下載管理原始碼ASP.NET原始碼
- ASP.NET 大檔案下載的實現思路及程式碼ASP.NET
- 用ASP.net判斷上傳檔案型別的三種方法ASP.NET型別
- 四種OS下安裝Docker的方法Docker