使用PHP下载CSV文件

时间:2015-10-07 15:11:51

标签: php csv header

我正在尝试使用PHP下载CSV文件但我无法使其获得对话框。 我更改了标头并使用了readfile()函数,如here

所示

这是我的代码:

$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"

所以我无法弄清楚为什么我没有得到保存文件的对话框。

2 个答案:

答案 0 :(得分:2)

添加以下标题:

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

答案 1 :(得分: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';

                }); 

这是ajax请求,我执行该请求是为了创建CSV文件(也是压缩的)。然后我使用这一行:

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

为了强制下载文件。