2010-08-16 48 views
1

我已經使用PHP頭文件實現了一個下載腳本來下載PDF文件。我的腳本工作正常,並且在我的本地主機上也下載了相應的PDF文件,但是那個腳本在我的服務器中不起作用。使用PHP下載PDF文件在服務器中被破壞

我的代碼是:

header("Content-Disposition: attachment; filename='dfile.pdf'"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-type: application/pdf;"); 

readfile("http://www.education.gov.yk.ca/pdf/pdf-test.pdf"); 

在我的服務器上的文件瀏覽器出現的罰款和下載文件也可作爲dfile.pdf,但如果我嘗試打開下載的文件,然後我得到的the file has been damaged的錯誤信息。我的任何服務器設置導致此問題或別的?

任何解決此問題的建議都非常可觀。

注意:我認爲這可能是我的服務器PHP設置的問題,任何人都可以告訴我「readfile」函數是否需要任何PHP設置來啓用我的服務器?

由於提前, 西瓦...

+0

可能有幾個原因。首先,找到文件如何被損壞的線索。它是零字節嗎?當你在文本編輯器中打開它時,你會看到純文本錯誤或警告嗎?等等。 – zaf 2010-08-16 12:33:27

+0

TMK,不特定於PHP5。 http://php.net/manual/en/function.readfile.php http://php.net/ChangeLog-5.php – TheLQ 2010-08-17 21:42:02

回答

0

此問題是由於我的服務器PHP設置,'allow_url_fopen'設置未在我的服務器中啓用。我正在使用CURL處理這種情況,無論如何感謝您的支持。

3

我認爲PHP輸出PDF文件正文之前一定的警示作用。檢查一下。

+0

我無法打開下載的PDF文件。在打開文件時,我剛剛收到一個錯誤彈出窗口,提示'Adobe Reader無法打開「dfile.pdf」,因爲它不是受支持的文件類型,或者是因爲文件已損壞。 – Siva 2010-08-16 11:55:06

+2

您可以在任何十六進制或文本編輯器中打開它,只是爲了查看是否有任何非PDF事物在開始。 – 2010-08-16 12:25:30

+0

是用文本編輯器(文字板和文字板)打開,沒有任何內容出現。下載的文件大小爲'0 KB',沒有數據。 – Siva 2010-08-16 12:32:35

0

嘗試使用此代碼:

$file = 'monkey.pdf'; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/pdf'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
} 
相關問題