Node Express – Http post来返回文件

提交HTTPpost时,我无法返回文件

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

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'); 

我怎样才能做到这一点,当用户点击一个button时,它会发送一个POST请求,然后下载一个由节点服务器dynamic创build的文件?

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保存到文件。