2012-03-19 97 views
0

基本上,用戶將會導出一些數據到一個txt文件。該txt文件將自動下載。下載工作正常,並顯示我想要的數據。但是,實際頁面的HTML會被附加到它的最後?強制通過PHP下載txt文件包括HTML

$fh = fopen($filename, 'w'); 
fwrite($fh, $data); 
fclose($fh); 

header('Content-disposition: attachment; filename='.$filename); 
header('Content-type: text/plain'); 
readfile($filename); 
+3

實際頁面是什麼?您是否試圖在單個HTTP響應中提供兩個文件(一個下載文件和一個HTML文檔)?你不能那樣做,HTTP不能這樣工作。 – Quentin 2012-03-19 17:04:42

+0

謝謝!那顯然是那個問題。只是我注意到其他頁面「行事」,好像它們同時提供頁面和下載。 – 2012-03-19 17:07:19

+0

如果你有一個下載腳本也輸出HTML,那麼你需要將它們分開。下載腳本除了要下載的數據外不應輸出任何內容,或者如果下載無法開始,則輸出錯誤消息。 – GordonM 2012-03-19 17:09:14

回答

3

如果上面的代碼後,HTML,你可以readfile($filename)後要exit

+1

謝謝。我在readfile()之後添加了exit,它完美地工作。我的印象是退出會徹底殺死頁面。 – 2012-03-19 17:08:52

+1

它會殺死頁面,但它確實「很好地」,讓任何自動清理函數和對象析構函數首先運行......但問題如註釋中所述,不能提供下載文件和HTML頁面同時,當你看到一些看起來像這樣的東西時,它只是假裝。通常它會下載一個HTML頁面,然後一旦頁面加載,它會觸發下載,如果服務正確,它實際上並不會改變您正在瀏覽的頁面。 – Jason 2012-03-19 17:50:15