我在提交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请求,然后下载由节点服务器即时创建的文件?
答案 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
保存到文件中。