2013-05-30 92 views
0

我不能爲我的生活得到一個下載對話框彈出,而不是直接在我的節點應用程序中下載文件。下載對話框不顯示

我困擾的代碼如下所示:

app.get(`/search/download`, function(req, res){ 
    var request = require(`request`); 
    request({uri: `http://some.csv.file`, headers: {`content-type`: `text/csv`}} 
     , function(err, response, body) { 

     res.set(`Content-Disposition`, `attachment; filename="search-results.csv"`); 
     res.set(`Content-Type`, `text/csv`); 
     res.send(body); 
    }); 
} 

不管我怎麼改變,Chrome和Safari瀏覽器立即下載文件,而不是帶來了一個保存對話框。

回答

2

將內容類型從text/csv更改爲application/octet-stream

app.get(`/search/download`, function(req, res){ 
    var request = require(`request`); 
    request({uri: `http://some.csv.file`, headers: {`content-type`: `text/csv`}} 
     , function(err, response, body) { 

     res.set(`Content-Disposition`, `attachment; filename="search-results.csv"`); 
     res.set(`Content-Type`, `application/octet-stream`); 
     res.send(body); 
    }); 
} 
+0

我必須有別的東西錯了,因爲這也立即下載文件,而不是觸發的下載對話框。 –

+0

經過一些研究後,看起來我還需要在Chrome中打開一些設置以打開另存爲對話框。但這是我在服務器端需要的。謝謝! –

0

有做同樣的事情(如果所服務的文件是靜態的)一個簡單的方法:

app.use(express.static(__dirname + '/some.csv.file', { 
    setHeaders: function(res, path) { 
     res.set('Content-Disposition', 'attachment; filename="search-results.csv"'); 
     res.set('Content-Type', 'application/octet-stream'); 
    } 
})