2013-11-26 90 views
1

我試圖強制一個文件下載,我得到的是瀏覽器窗口中的一個未知字符的隨機字符串。代碼包括:PHP readfile()導致pdf在瀏覽器中呈現,而不是下載

$file_url = "docs/$c/$path"; 
header('Content-Description: File Transfer'); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=$title.$type"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); // required for certain browsers 
header("Content-Transfer-Encoding: binary"); 
header("Pragma: public"); 
header("Content-Length: ".filesize($file_url)); 
readfile($file_url); 

它已經持續了大約一個星期,我瘋了。任何幫助表示讚賞。 謝謝。

回答

1

我懷疑你的Content-Disposition頭是問題所在。

試試這個版本來代替:

header("Content-Disposition: attachment; filename=\"$title.$type\""); 
+0

試過 - 沒有骰子。任何其他建議?非常感謝。 – user988129

0

我正面臨着同樣的錯誤。使用ob_clean()和flush()幫助我的案例。我用下面的代碼:

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-disposition: attachment; filename='.$filename.'.pdf'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-type: application/force-download'); 
header('Content-transfer-encoding: binary'); 
ob_clean(); 
flush(); 
readfile('Reports/'.$filename.'.pdf'); 
exit; 
相關問題