MEAN 堆栈如何向用户发送文件

MEAN stack how to send a user a file

我在 express 控制器上有一些代码,如下所示:

// 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);

在我的 angular 视图 (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 下载。

任何帮助将不胜感激。

由于使用 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

非常感谢所有对此发表评论的人!