有没有办法生成csv文件并使用meteor在客户端下载?我希望用户能够单击按钮,然后在不离开当前页面的情况下下载文件。
Template.analytics.events({
'click .csv-export' (event, template) {
const json2csv = require('json2csv');
let fields = ['timestamp', 'user', 'category', 'action'];
let data = Analytics.find({}).fetch();
try {
let result = json2csv({data: data, fields: fields});
var filename = 'test.csv';
var headers = {
'Content-Type': 'text/csv',
'Content-Disposition': "attachment; filename=" + filename
};
this.response.writeHead(200, headers);
this.response.end(result);
} catch (err) {
console.error(err);
}
}
});
答案 0 :(得分:0)
感谢@Jankapunkt,我能够解决这个问题。 这是答案,所有代码都在Template.onRendered中。
// DOWNLOAD CSV
this.csvFile = null,
makeTextFile = function() {
var csv = json2csv(Analytics.find({}).fetch(), true, false);
var data = new Blob([csv], {
type: 'text/csv'
});
if (this.csvFile !== null) {
window.URL.revokeObjectURL(this.csvFile);
}
this.csvFile = window.URL.createObjectURL(data);
return this.csvFile;
};
let csvExport = document.getElementById('csv-export');
csvExport.addEventListener('click', function() {
let downloadLink = makeTextFile();
window.open(downloadLink, '_blank');
}, false);
//END DOWNLOAD CSV