下载对话框不显示

时间:2013-05-30 23:18:07

标签: node.js express download

我不能在我的生活中获得一个下载对话框,而不是直接下载我的节点应用程序中的文件。

我的问题代码如下:

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 个答案:

答案 0 :(得分: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);
    });
}

答案 1 :(得分: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');
    }
})