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 都会立即下载文件,而不是打开保存对话框。

4

2 回答 2

2

将 Content-Type 从 更改text/csvapplication/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);
    });
}
于 2013-05-30T23:28:59.003 回答
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');
    }
})
于 2015-03-26T09:14:44.937 回答