我現在接觸到的下載有兩種形式:
直接下載伺服器某個目錄下的檔案和下載資料庫中存的二進位檔案
代碼如下:
//擷取檔案對象
FileInfo file = new FileInfo(Server.MapPath("~/123123213213.txt"));
//附件形式
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("好啊.txt", System.Text.Encoding.UTF8));
Response.WriteFile(file.FullName);
//類比資料庫取出的二進位流形式
Response.Clear();
byte[] b = new byte;
FileStream fs = new FileStream(Server.MapPath("~/123123213213.txt"), FileMode.Open);
fs.Read(b, 0, (int)file.Length);//這裡強轉,存時要限制流大小
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("好啊.txt", System.Text.Encoding.UTF8));
Response.BinaryWrite(b);
有幾點需要說明:
1.Content-Disposition是一種擴充的html協議,我的理解是正好可以來處理下載功能
他的值有兩種:attachment表示以附件形式下載,inline表示就在網頁上來顯示
2.filename後面可以自己跟據需要來定檔案名稱與副檔名
3.如果檔案名稱內有中文字,一定要編碼,不然會有亂碼的
一面是一個比較好的網址,說的比我詳細:
http://www.cnblogs.com/fredlau/archive/2008/10/14/1311018.html