2014-12-01 86 views
0

,使用PHP,在後端部分,我產生了一些的CSV文件:製作創建CSV文件下載

$fp = fopen($filename, 'w'); 
foreach ($rows as $row) { 
    fputcsv($fp, $row, ';', '"'); 
} 
fclose($fp); 

然後,在前端來看,我創建一個鏈接到那些的CSV。問題是,當點擊指向csv的鏈接時,該文件的內容會顯示在我的瀏覽器中,而不是下載它。 首先,我嘗試了目標屬性

target="_blank" 

沒有任何變化。 然後我在網上看到的,我可以用頭功能

header('Content-Type: application/csv'); 
header('Content-Disposition: attachment; filename='.$filename); 
$fp = fopen($filename, 'w'); 
foreach ($rows as $row) { 
    fputcsv($fp, $row, ';', '"'); 
} 
fclose($fp); 

但是,這改變了,是當我點擊,在後臺生成CSV文件按鈕,瀏覽器提出我的唯一的事情解決這個問題每次下載csv文件。但我想要的是在前端下載它。

任何解決方案?

非常感謝。

+0

當你做'fopen()'時,打開一個名爲'php://輸出'的文件 – 2014-12-01 19:22:34

+0

由於頭文件功能 – user 2014-12-01 19:25:12

+0

仍然要求我下載文件後端請注意,csv文件的內容類型是'text/csv',而不是'application/csv' - [RFC4180](http://tools.ietf.org/html/rfc4180) – 2014-12-01 19:28:01

回答

0

把這個:

header('Content-Type: application/csv'); 
header('Content-Disposition: attachment; filename='.$filename); 

在呈現該文件的網頁。

+0

對於每個csv鏈接? – user 2014-12-01 19:28:38

+0

我剛試過,加載完頁面後,瀏覽器要求我下載文件,甚至點擊鏈接!這不是我想要的! – user 2014-12-01 19:31:02

+0

每個csv鏈接都指向不同的腳本來生成csv文件嗎?您只需將它放在生成csv的腳本上,以便在生成csv時將其發送出去。 – 2014-12-01 19:31:23