【发布时间】:2016-12-27 12:14:17
【问题描述】:
我已经看到很多这类问题的答案,但没有一个对我有用。我有一个 CSV 对象,它具有这样的 createCSV 函数:
public function createCSV($url, $delimiter = ","){
$file = fopen($url, 'w');
foreach ($this->content as $line) {
fputcsv($file, $line, $delimiter);
}
fclose($file);
}
我想直接从浏览器下载它,所以这就是我所做的:
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="'.$filename.'"');
$csv_file->createCSV('php://output');
这部分代码是通过 AJAX 调用执行的,即使标头设置为 text/csv 下载也不起作用,但在响应选项卡中我可以看到我的 csv 的内容。我尝试过使用不同的标题,但没有一个有效。如何下载 CSV 文件?
编辑
问题是我没有 CSV 的 URL,我不想将文件存储在某个地方,我只想构建文件并直接使用浏览器下载
【问题讨论】:
-
由于您的 CSV 生成工作正常,但 AJAX 妨碍了您,因此通常建议在此站点周围打开一个 iframe 或表单操作,其 URL 指向创建 CSV 的 PHP 脚本。浏览器本身将按照您的预期运行并下载文件,因为您的标题看起来正确。 stackoverflow.com/questions/13039178/…,还有stackoverflow.com/questions/9353625/php-ajax-force-download
-
@Eugen 已经尝试过这些标题,但没有成功
-
如果您现在将浏览器直接指向 CSV 生成 URL(没有 JS/AJAX),我希望下载能够正常工作。对吗?