文件下載所需要的注意事項梯啤。
1 Content-disposition
Content-disposition 是 MIME 協(xié)議的擴展锭弊,MIME 協(xié)議指示 MIME 用戶代理如何顯示附加的文件垫竞。當 Internet Explorer 接收到頭時,它會激活文件下載對話框婴渡,它的文件名框自動填充了頭中指定的文件名澡腾。(請注意,這是設(shè)計導致的较曼;無法使用此功能將文檔保存到用戶的計算機上磷斧,而不向用戶詢問保存位置。)
服務(wù)端向客戶端游覽器發(fā)送文件時捷犹,如果是瀏覽器支持的文件類型瞳抓,一般會默認使用瀏覽器打開,比如txt伏恐、jpg等,會直接在瀏覽器中顯示栓霜,如果需要提示用戶保存翠桦,就要利用Content-Disposition進行一下處理,關(guān)鍵在于一定要加上attachment:
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");
備注:這樣瀏覽器會提示保存還是打開胳蛮,即使選擇打開销凑,也會使用相關(guān)聯(lián)的程序比如記事本打開,而不是IE直接打開了
1 客戶端下載時文件名亂碼問題
將文件名通過UrlPathEncode編碼(通過UrlEncode編碼不能解決文件名出現(xiàn)的空格問題仅炊,下載時空格會編譯成加號斗幼,UrlEncode是將整個URL編碼,而UrlPathEncode只是將URL中的Path部分編碼)
string encodeFileName = HttpUtility.UrlPathEncode("售樓管 理系統(tǒng).rar");
Context.Response.AddHeader("Content-Disposition",
string.Format("attachment;filename=\"{0}\"",encodeFileName));
Context.Response.WriteFile("售樓管理系統(tǒng).rar");