2010-04-09 108 views
1

我想要一個php頁面來「顯示」pdf。這裏是代碼:Firefox未能檢測到由PHP設置的內容類型

<?php 
    header("Content-type: application/pdf"); 
    readfile('Reportage - Berlin.pdf'); //tried echo(readfile(...)) as well 
?> 

不是很複雜我想,但不知何故firefox無法檢測到這是一個pdf。這適用於Safari,但在Firefox中,我得到一個提示下載文件,所以我得到一個pdftest.php文件。我知道即時獲取我的文件,因爲如果我將擴展名重命名爲pdf,我可以打開它。

這看起來太簡單了!我錯過了什麼?

回答

5

如果您希望使用Adobe Reader在瀏覽器中打開它,那麼也可以依賴於瀏覽器設置。之所以說文件名是pdftest.php是因爲你沒有告訴瀏覽器文件名是什麼。

如果要強制瀏覽器下載它,補充一點:

header('Content-Disposition: attachment; filename="downloaded.pdf"');

+1

+1或者將'pdftest.php'後的文件名作爲尾部路徑部分。 (這可能是非ASCII文件名所必需的。) – bobince 2010-04-09 23:11:20

+0

@Htbaa:如果我不想強制下載,該怎麼辦?增加這個強制Safari瀏覽器下載文件,而不是在瀏覽器窗口中「預覽」它。我想一個更大的問題:這個瀏覽器預覽是更多的Safari瀏覽器功能?有沒有辦法在ff中模擬這種行爲?然而,這絕對回答了我如何使ff看到類型的問題。 – Ying 2010-04-09 23:24:55

+0

@bobince:正是我需要的!你是男人(或女人)! – Ying 2010-04-09 23:26:49

4

Htbaa是看錯你應該添加什麼線,但由於英詢問瀏覽器下載文件,正確的路線是:

header('Content-Disposition: inline; filename="downloaded.pdf"'); 

順便說一句,你不想echo(readfile(...)),因爲它會增加一個int代表讀取的文件大小(php.net/readfile

+1

當然,作爲一個頭文件* *有*要放在*之前*開始打印文件的內容 – 1ace 2010-04-09 23:23:14