提交 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 请求,而该请求又会下载一个由 Node 服务器动态创建的文件?
最佳答案
res.attachment()
仅设置内容配置 header 。请改用 res.download()
。
res.download(path.resolve("./server/tmp/ionic.app.scss"));
res.download()
设置内容配置 header 并发送文件。
-- 编辑--
就像我在上一条评论中提到的那样,我没有提到您应该删除代码中的最终 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
保存到文件中。
关于node.js - Node Express - Http post 返回一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25837009/