Node js从服务器提供文件正文并在浏览器中下载

时间:2018-06-08 14:16:29

标签: javascript node.js file express

我有一个文件存储库,当我从浏览器调用它时,它会自动下载文件,这很好。 但我想在我的服务器上执行此请求,然后将文件结果提供给浏览器。以下是我服务器的get请求示例。

downloadFile(req , res , next) {
    let options = {
         url: 'url to my file repo',
    };

    request(options, function (err, resp, body) {
       if (err) {
           res.status(500).send("");
           return
       }

       for (const header in resp.headers) {
           if (resp.headers.hasOwnProperty(header)) {
               res.setHeader(header, resp.headers[header]);
           }
       }
       resp.pipe(res);
    })
}

请求正常,当我从浏览器访问我的服务器时,它开始下载文件。一切似乎工作正常,除了一件事,文件无法打开。 此文件格式无法打开,我说图像播放器(例如文件是图像)。 问题出在哪里,这是我从服务器提供文件的方式吗? 先感谢您。我失去了很多时间,无法找到解决方案。

1 个答案:

答案 0 :(得分:0)

因为您可能想要发送的是请求的正文(例如图像的数据)。 所以不是resp.pipe(res):

res.send(body)

使用浏览器的开发者模式检查在服务器和浏览器之间传递的网络消息。