从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请求时,无法下载。我确定该函数正在运行,因为控制台正在记录该消息。

任何帮助,将不胜感激!

+0

我可能是错的,但尝试删除斜线?如'var file = __dirname +'blah.txt';' – MPawlak

+0

[可能的重复](http://stackoverflow.com/questions/7288814/download-a-file-from-nodejs-server-using-express) – kiro112

+0

您是否使用XHR(“AJAX”)请求'/ generate'?如果是这样:你不能使用XHR触发常规文件下载。可以找到一个可能的解决方案[这里](http://stackoverflow.com/a/16323408/893780)。 – robertklep

使用'//'作为单斜杠忽略字母。

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