2016-09-25 59 views
0

我試圖在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

回答

0

使用'//'作爲單斜槓忽略字母。

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