我在快速控制器上有一些代码如下:
// Correct file path and write data
var currentDate = new Date();
var storagePath = path.join(__dirname,'../../public/reports/', 'Risk-Log.csv');
var source = es.readArray(riskLogs);
source.pipe(jsonCSV.csv(options)).pipe(fs.createWriteStream(storagePath));
console.log('Completed csv export to ' + storagePath);
// Send file back
res.sendFile(storagePath);
在我的角度视图(log.client.view.html
)中,我有以下内容:
<a href="/#!/my-logs/download" class="btn btn-default">Download CSV</a>
当我点击该按钮时...文件生成正确,但文件永远不会被发送回用户(他们可以告诉)。
如果我查看控制台调试器,我会得到以下内容:
Resource {$promise: Object, $resolved: false, $get: function, $save: function, $query: function…}
我没有使用Angular或任何特殊的路由,因为它正在点击Node(express)控制器并生成文件。我想知道这是否是我应该在Angular中做的事情?
我想要实现的是当用户点击该按钮时,CSV会下载。
任何帮助都会非常感激。
答案 0 :(得分:0)
因为使用express res.send()是一个缓冲区....你必须像这样发送内容类型:
res.set('Content-Type', 'text/csv');
res.set('Content-Disposition', 'attachment');
res.send(csv); // csv object created with json-csv npm module
非常感谢所有对此发表评论的人!