通過程序讀取文件或生成文件來下載,一般只需設置 header 頭即可:
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="保存時的文件名.pdf"');
在谷歌、火狐等瀏覽器中,Content-type 的設置貌似並不重要,但在 Safari 上則有不同:
- 當 Content-type 設置爲 text/html 時,下載的文件會被自動添加上後綴 .html;
- 當設置爲 application/x-msdownload 時,下載的文件會被自動添加後綴 .exe。
content-type 用於告訴瀏覽器應該以何種方式處理文件。瀏覽器會盡量以可識別的方式來打開它,如圖一爲相關的測試情況:
從圖一可以看出,如果你覺得針對不同文件類型區別設置不同的 Content-type 太麻煩,那麼將它設置爲 applicatoin/octet-stream 是比較好的選擇。
相關參考
http://www.cfanz.cn/?c=article&a=read&id=80293