2015-05-26 88 views
3

我想強制瀏覽器從外部存儲器下載文件,並給定url。 我實現了這個快遞控制器後行動:node express content-disposition

var download = function(req, res) { 
    request(req.body.url).on('response', function(response) { 
     res.set({ 
      'Content-Disposition': 'attachment; filename=' + req.body.filename, 
      'Content-Type': response.headers['content-type'] 
     }); 
    }) 
    .pipe(res); 
}; 

我不知道爲什麼總是瀏覽器收到「內聯」,而不是「附件」,避免我要下載的文件。

在這種情況下,我使用express和request,服務器託管在Heroku上,託管文件的服務器是FilePicker。

+0

FWIW,你的代碼會做錯誤的事情的情況下,文件名中包含空格,某些分隔符,或者非ASCII字符。請參閱RFC 6266。 –

回答

3

我在四處尋找同樣的東西。 Express' documentation顯示了一個非常簡單的輔助方法,正確的開箱即用:

var express = require('express'); 
var app = express(); 

app.get('/download', function(req, res) { 
    res.download('/path/to/your_file.pdf'); 
});