一. 服務端通過Response輸出相應的HTTP Response Headers資訊,和要下載的檔案的資料來把檔案發送到用戶端,HTTP Response Headers表現在html檔案中是下面的形式:
<meta http-equiv="Content-Type" content="text/htm ">
http-equiv表示是Headers的名稱,content表示這個Headers的值
二. 首先,要輸出檔案的MIME類型:
Page.Response.AddHeader( "Content-Type", “MIME類型” );
三. 其次,要輸出下載的檔案的開啟位置和檔案名稱:
Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName );
content-disposition 的 HTTP response header 允許指定文檔表示的資訊。使用這種 header ,你就可以將文檔指定成單獨開啟(而不是在瀏覽器中開啟),還可以根據使用者的操作來顯示。如果使用者要儲存文檔,你還可以為該文檔建議一個檔案名稱。這個建議名稱會出現在 Save As 對話方塊的“檔案名稱”欄中。
attachment ―― 表示作為附件發送到用戶端,用戶端將單獨開啟此檔案。
inline ―― 表示將在瀏覽器中開啟這個檔案。
filename ―― 表示發送到用戶端檔案的檔案名稱。
四. 準備發送到用戶端的檔案資料:
不管什麼類型的檔案都要先轉成byte類型的數組,然後將這個byte數組用Response.BinaryWrite方法輸出到用戶端。
string path ="G://download//down.txt";
System.IO.FileInfo file = new System.IO.FileInfo(path);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name));
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.End();