<pre class="c" name="code">header("Content-Disposition: attachment; filename=xxx.pdf");
請參考:
RFC 2183
Content Disposition不是HTTP(RFC 2616)的一部分,而是MIME(RFC 2045~2048)的擴充。attachement是要求MUA不要直接顯示,需要另外處理(你可以改成inline試試看),filename這個參數是指定如果要當成檔案處理的話,檔名是什麼。(另外也可以送出檔案的產生、修改、讀取時間與大小等資訊)
強迫下載並存成檔案應該是瀏覽器為了安全起見的處理方式,這並不是硬性規定。但是既然都已經用預設的檔名來存檔了,那送出Content-Type就沒多大意義...簡單地說就是這樣吧。
RFC 2183文件裡面有更複雜的例子,不過multi-part的response並不合http的文法,瀏覽器應該是沒辦法處理的。
chan15提到:
header("Content-type:application/pdf");
據我所知,這個欄位是提供給 Client Browser 啓動對應的 Application,舉個例,FireFox 點 PDF 會啓動 Acrobat reader,但是對於 Download 這個 Action,多半的 Browser default 都是存到 download 目錄,很少 IE 會下載會自動開啓。