我正在尝试使用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"
所以我无法弄清楚为什么我没有得到保存文件的对话框。
答案 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';
为了强制下载文件。