2015-10-07 185 views
0

我正在嘗試使用PHP下載CSV文件,但無法使其獲取對話框。 我已經改變了報頭和所使用的的ReadFile()函數如圖here使用PHP下載CSV文件

這是我的代碼:

$nodeId = 'something'; 
$filename = "/var/www/dkar/ruralBroadband/ruralApp/rural/csvExports/$nodeId.csv"; 

header('Content-type: text/csv'); 
header('Content-disposition: attachment; filename ="report.csv"'); 
readfile($filename); 

**編輯**

也試圖與此所建議:

header('Content-Disposition: attachment; filename="report.csv"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . filesize('report.csv')); 

當我檢查Firebug中的響應時,我可以看到整個CSV文件返回。此外,標題變成:

Content-Type text/csv 
Content-disposition attachment; filename ="report.csv" 

所以我不明白爲什麼我不會得到對話框來保存文件。

回答

0

畢竟我沒有用上面的方法,我做的是,它工作正常,它更直截了當:

var ajaxurl = 'exportNodeData.php', // script to run 
       data = {nodeId:nodeId}; // data to pass 
       $.post(ajaxurl, data, function (response) {  
        document.location.href = 'https://www.ruralauditor.gr/csvExports/'+nodeId+'.zip'; 

       }); 

這是阿賈克斯請求,我爲了創建CSV文件(它也被壓縮)執行。然後我用這條線:

document.location.href = 'https://www.ruralauditor.gr/csvExports/'+nodeId+'.zip'; 

爲了強制下載文件。

2

添加這些標題:

header('Content-Disposition: inline; filename="report.csv"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . filesize($filename)); 
+0

inline?不附件? – user1919

+0

我試過,並沒有給出不同的結果/ – user1919

+0

是'$ filename'你想下載的文件?在這種情況下,內容長度應該是'$ filename'而不是「reports.csv」。我已經更新了答案。 – NaijaProgrammer