Express和Request使Chrome下载文件而不是提供文件

时间:2016-10-05 07:09:32

标签: node.js express request

我想提供远程HTML,所以我是:

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

var app = express();

app.get('/', function (req, res) {
    res.header('Content-Type', 'text/html');

    request('https://www.googleapis.com/download/storage/v1/...o/html%2Findex.html?generation=1475649807769000&alt=media')
        .pipe(res);
});

app.listen(3000, function () {
    console.log('Example app listening on port 3000!');
});
  1. 使用Request模块下载它。
  2. 用它来表达' res
  3. 在Chrome中,Chrome不下载HTML,而是下载HTML。怎么样?

    enter image description here

2 个答案:

答案 0 :(得分:2)

如果您将HTTP请求的结果直接传递给您的响应,则将逐字复制由远程服务器设置的任何标头,包括可能强制下载的标头,例如content-disposition

你自己已经找到了一个好的解决方案:

request
    .get(URL)
    .on('response', (response) => {
        delete response.headers['content-disposition']
    })
    .pipe(res);

答案 1 :(得分:0)

您必须将此属性添加到标头响应中:

res.header('Content-disposition', 'attachment; filename= "' + encodeURI(file_name) +'"' );