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

时间:2015-02-07 23:37:00

标签: javascript angularjs node.js meanjs

我在快速控制器上有一些代码如下:

// 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会下载。

任何帮助都会非常感激。

1 个答案:

答案 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

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