Node.js Node Express-返回文件的Http post

Node.js Node Express-返回文件的Http post,node.js,http,express,download,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.r

提交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请求,然后下载节点服务器动态创建的文件?

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

res.download(path.resolve("./server/tmp/ionic.app.scss"));
res.download()
都设置内容处置头并发送文件

--编辑--

正如我在上一篇评论中提到的,我没有提到应该删除代码中的final
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
保存到文件中。

hmm,我现在已经完成了,我看到
内容配置:附件;filename=“ionic.scss”
在我的响应头中,但仍然没有下载任何文件(没有启动)。知道为什么吗?保罗,我刚做了一个测试,它对我有效。我的代码中唯一的区别是,我没有您在代码末尾的
res.end()
。我建议您删除它。我在中为您添加了一个用于结帐的工作示例。感谢您提供的示例!我意识到我在使用HTTP GET+javascript时遇到了问题,类似于: