从Express请求处理程序中下载文件?
问题描述:
我试图在POST请求发送到我的服务器时触发文件下载。这里是我的尝试:从Express请求处理程序中下载文件?
router.post('/generate', function (req, res) {
console.log('THIS IS RUNNING');
var file = __dirname + '/blah.txt';
res.download(file);
});
然而,res.download(file);
似乎并没有被做任何事情。当浏览器发送/generate
POST请求时,无法下载。我确定该函数正在运行,因为控制台正在记录该消息。
任何帮助,将不胜感激!
答
使用'//'作为单斜杠忽略字母。
router.post('/generate', function (req, res) {
console.log('THIS IS RUNNING');
var file = __dirname + '//blah.txt';
res.end(file);
});
对于下载弹出第一个创建这个API为GET,然后设置如下内容处置:
router.get('/generate',function (req, res) {
res.set('Content-Disposition', 'attachment; filename=this.txt')
res.download(__dirname + '\\this.txt')
});
我可能是错的,但尝试删除斜线?如'var file = __dirname +'blah.txt';' – MPawlak
[可能的重复](http://stackoverflow.com/questions/7288814/download-a-file-from-nodejs-server-using-express) – kiro112
您是否使用XHR(“AJAX”)请求'/ generate'?如果是这样:你不能使用XHR触发常规文件下载。可以找到一个可能的解决方案[这里](http://stackoverflow.com/a/16323408/893780)。 – robertklep