2012-06-11 9 views
0

這已經發布,但我試過很多解決方案,發現SO多(是這樣的:http://davidwalsh.name/php-force-download強制文件下載使用PHP:損壞的文件,嘗試了好幾種解決方案

我基本上有這樣的:

{  
    $filePath = '../public/myfile.png'; 
    $fileName = basename($filePath); 
    $fileSize = filesize($filePath); 


    if (!is_file) { 
     die("File not found"); 
    } else {       
     header("Content-Description: File Transfer"); 
     header('Content-Type: application/octet-stream'); 
     header("Content-Disposition: attachment; filename= " . $fileName); 
     header("Content-Transfer-Encoding: binary"); 
     readfile($filePath); 
    } 
} 

文件被識別和下載,但.PNG文件是空的,.DOC文件已損壞(Word要求我修復文件,那麼沒關係)。我也嘗試過PDF,並沒有問題。

我trues把所有排序的選項(附註,緩存控制,過期,內容長度等),還是下載文件,但在某種程度上破壞......

你有沒有過我的問題?請考慮我在IIS 7.5

在此先感謝

+3

如果您嘗試使用文本編輯器打開損壞的文件之一併查看是否有打印錯誤 –

+0

錯誤的大小?這可能是腐敗的主要原因;另一個是php的警告 –

回答

8

開放與像Notepad++純文本編輯器下載的文件。在頂部你會發現一個PHP錯誤通知,它會告訴你出了什麼問題。

錯誤可能是「會話已發送」。然後在腳本的開頭添加ob_start();

+1

哦,我的...「使用未定義的常量is_file - 假設'is_file'」,我忘記了函數中的文件路徑!好吧,我需要一站... :-) 非常感謝,你剛剛救了我的一天! – Ivan

+2

您可能還想使用這個技巧來查看文件開頭是否有空格。它會阻止圖像正確加載除photoshop之外的所有內容。 –