Content-disposition 是 MIME 協議的擴展,MIME 協議指示 MIME 用戶代理如何顯示附加的文件。Content-disposition其實可以控制用戶請求所得的內容存為一個文件的時候提供一個默認的文件名,文件直接在瀏覽器上顯示或者在訪問時彈出文件下載對話框。
格式說明: content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )
字段說明:Content-Disposition為屬性名disposition-type是以什么方式下載,如attachment為以附件方式下載disposition-parm為默認保存時的文件名服務端向客戶端游覽器發送文件時,如果是瀏覽器支持的文件類型,一般會默認使用瀏覽器打開,比如txt、jpg等,會直接在瀏覽器中顯示,如果需要提示用戶保存,就要利用Content-Disposition進行一下處理,關鍵在於一定要加上attachment:復制代碼 代碼如下:
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");
備注:這樣瀏覽器會提示保存還是打開,即使選擇打開,也會使用相關聯的程序比如記事本打開,而不是IE直接打開了。Content-Disposition就是當用戶想把請求所得的內容存為一個文件的時候提供一個默認的文件名。
那么由上可知具體的例子: 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下面就是不行。
HTTP Content-type Content-Disposition
Content-type
內容類型,一般是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件。
文件擴展名與 Content-type 的對應關系,參見 http://tool.oschina.net/commons
Content-Disposition
Content-disposition 是 MIME 協議的擴展,MIME 協議指示 MIME 用戶代理如何顯示附加的文件。
當 IE 瀏覽器接收到頭時,它會激活文件下載對話框,它的文件名框自動填充了頭中指定的文件名。
Content-Disposition 就是當用戶想把請求所得的內容存為一個文件的時候提供一個默認的文件名。
示例:
Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename="filename.jpg"