0
我可以做這樣的事情嗎?輸出緩衝php文件下載
ob_start();
header("Content-Type: application/msword");
header("Content-Disposition: attachment; filename=".$title);
header("Content-Length: ".$size);
header("Content-Transfer-Encoding: binary");
readfile($path);
ob_end_flush();
目前我正在下載正確命名的文件,但該文件的內容是從包含上述代碼的PHP的HTML輸出。
我已驗證$路徑是否正確。 $大小會導致這種情況發生嗎? 我也試過在ob_start()之後直接ob_flush()。
編輯:現在下面的代碼:
if (file_exists($path)){
ob_start();
header("Content-Type: application/msword");
header("Content-Disposition: attachment; filename=".$title);
header("Content-Length: ".filesize($path));
header("Content-Transfer-Encoding: binary");
readfile($path);
ob_end_flush();
die();
} else die ("Not Found");
與上述相同的問題代碼的結果。文件被下載,命名正確,顯然存在並且大小正確,但文件的內容是頁面的html輸出。
在此先感謝
我只注意到這是在文件的最後是下載(錯誤地): 「INT(14)內容」
,但我不是故意的任何地方輸出這在我的代碼中。
記住ob_start導致ReadFile的讀取內存中的整個文件,有什麼可以引起大的文件存儲的問題。還要確保$ size是正確的,'filesize($ path);'是完美的,但我不能在你的代碼中看到它。 –