Content-disposition 是 MIME 協議的擴展,MIME 協議指示 MIME 用戶代理如何顯示附加的文件。當 Internet Explorer 接收到頭時,它會激活文件下載對話框,它的文件名框自動填充了頭中指定的文件名。(請注意,這是設計致使的;沒法使用此功能將文檔保存到用戶的計算機上,而不向用戶詢問保存位置。) 瀏覽器
服務端向客戶端遊覽器發送文件時,若是是瀏覽器支持的文件類型,通常會默認使用瀏覽器打開,好比txt、jpg等,會直接在瀏覽器中顯示,若是須要提示用戶保存,就要利用Content-Disposition進行一下處理,關鍵在於必定要加上attachment:緩存
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");app
備註:這樣瀏覽器會提示保存仍是打開,即便選擇打開,也會使用相關聯的程序好比記事本打開,而不是IE直接打開了。firefox
Content-Disposition就是當用戶想把請求所得的內容存爲一個文件的時候提供一個默認的文件名。具體的定義以下:設計
content-disposition = 「Content-Disposition」 「:」代理
disposition-type *( 「;」 disposition-parm )token
disposition-type = 「attachment」 | disp-extension-token文檔
disposition-parm = filename-parm | disp-extension-parmstring
filename-parm = 「filename」 「=」 quoted-stringit
disp-extension-token = token
disp-extension-parm = token 「=」 ( token | quoted-string )
那麼由上可知具體的例子:
Content-Disposition: attachment; filename=「filename.xls」
固然filename參數能夠包含路徑信息,但User-Agnet會忽略掉這些信息,只會把路徑信息的最後一部分作爲文件名。當你在響應類型爲application/octet- stream狀況下使用了這個頭信息的話,那就意味着你不想直接顯示內容,而是彈出一個」文件下載」的對話框,接下來就是由你來決定「打開」仍是「保存」 了。
注意事項:
1.當代碼裏面使用Content-Disposition來確保瀏覽器彈出下載對話框的時候。 response.addHeader("Content-Disposition","attachment");必定要確保沒有作過關於禁止瀏覽器緩存的操做。以下:
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
否則會發現下載功能在opera和firefox裏面好好的沒問題,在IE下面就是不行,就是找不到文件。