Node Express - Http post返回一个文件

时间:2014-09-14 19:12:19

标签: node.js http express download

我在提交HTTP帖子时无法返回文件

我知道我的所有代码都在运行,直到下载/发送文件部分。

var postData = req.body;
var outputString = "";

mkdirp('./server/tmp');

_.each(postData, function (each) {
    outputString += each.variable + ":  " + each.value + " !default;\n";
});

fs.writeFile(path.resolve("./server/tmp/ionic.app.scss"), outputString);

res.attachment(path.resolve("./server/tmp/ionic.app.scss"));
res.end('hello,world\nkeesun,hi', 'UTF-8');

如何使用,当用户点击按钮时,它会发送一个POST请求,然后下载由节点服务器即时创建的文件?

1 个答案:

答案 0 :(得分:1)

res.attachment()仅设置内容处置标头。请改用res.download()

res.download(path.resolve("./server/tmp/ionic.app.scss"));

res.download()都设置内容处置标头并发送文件。

- 编辑 -

就像我在上次评论中提到的那样,我没有提到您应该删除代码中的最终res.end()

我想知道为什么你将生成的文本保存到文件中只是为了发送它。这样做的简化方法如下:

var postData = req.body;
var outputString = "";

mkdirp('./server/tmp');

_.each(postData, function (each) {
    outputString += each.variable + ":  " + each.value + " !default;\n";
});


res.attachment("ionic.app.scss");
res.send(outputString);
res.end();

这将实现相同的目标,而无需先将outputString保存到文件中。