header中Content-Disposition的作用與使用方法_PHP教程

來源:互聯網
上載者:User
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 = "Content-Disposition" ":"
disposition-type *( ";" disposition-parm )
disposition-type = "attachment" | disp-extension-token
disposition-parm = filename-parm | disp-extension-parm
filename-parm = "filename" "=" quoted-string
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下面就是不行

http://www.bkjia.com/PHPjc/325564.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/325564.htmlTechArticleContent-disposition 是 MIME 協議的擴充,MIME 協議指示 MIME 使用者代理程式如何顯示附加的檔案。Content-disposition其實可以控制使用者請求所得的內容存為一...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.