我已经看到了很多这类问题的答案,但没有一个对我有用。我有一个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,我不想将文件存储在某个地方,我只想构建文件并直接使用浏览器下载
答案 0 :(得分:1)
试试这段代码:
$('#exportcsv').click(function(){
var self = this;
$.ajax({
url : '/exportcsv',
method : 'get',
success : function(response)
{
console.log(response);
var csvData = 'data:application/csv;charset=UTF-8,' + encodeURIComponent(response);
$(self).attr({
'download': 'publisher.csv',
'href': csvData,
'target': '_blank'
});
// window.open(uri, 'test.csv');
}
})
})