2012-08-10 83 views
0

我有下面的源代碼(PHP)使用下載CSV文件HTML源代碼下載,而不是CSV文件

$file_name = date("YmdHis") . ".csv"; 


Header('Content-Type: text/csv'); 
Header("Content-disposition: attachment; filename=${file_name }"); 
Header("Content-type: application/octet-stream; name=${file_name }"); 

header('Pragma: 1'); 
header('Cache-control: private, max-age=60, pre-check=30'); 
session_cache_limiter('private_no_expire'); 

$csv = $header.$contents; 

if (mb_detect_encoding($csv) == 'SJIS-win') { 
    $csv = mb_convert_encoding($csv, 'UTF-8', 'SJIS-win'); 
} 
echo $csv; 

exit; 

隨着$頭和$內容是從數據庫中讀取。 此源與Firefox,IE工作正常,但我與Quihoo360(中國的瀏覽器稱爲:360安全瀏覽器)有問題。它不下載從數據庫讀取的內容的CSV文件,而是下載csv,內容是顯示頁面的HTML源。

有人可以讓我知道如何解決這個問題。

非常感謝。

+0

您只需要一個Content-Type標頭。將第一個更改爲text/plain並刪除第三個。 – 2012-08-10 13:02:05

回答

2

而不是你的內容類型,嘗試將其設置爲:

Content-Type: text/plain 

content types一個好名單。

編輯:嘗試這在你的PHP:

header('Content-Type: application/csv'); 
header('Content-Disposition: attachment; filename=example.csv'); 
header('Pragma: no-cache'); 
// echo out the csv file 
+0

感謝Fluffeh,我試過了,但似乎這個問題不能用這個 – Ichigo 2012-08-10 13:21:22

+0

@PhuNguyen來解決請參閱編輯。 – Fluffeh 2012-08-10 13:29:08

+0

嗨Fluffeh,我試過但得到了同樣的結果。我確認並看到了正確選擇的數據,似乎不是從數據庫中回顯選定的內容,而是回顯用於在屏幕上顯示的返回HTML源代碼 – Ichigo 2012-08-13 11:33:19

0

使用的內容類型的application/force-download迫使瀏覽器下載文件。我想這就是你要求的,對吧?

+0

嗨siidheesh,文件下載成功但內容不正確。它不是從DB中選擇的內容,而是下載顯示頁面的HTML源代碼 – Ichigo 2012-08-10 13:12:59