【问题标题】:Node js serve file body from server and download in browserNode js从服务器提供文件体并在浏览器中下载
【发布时间】:2018-06-08 14:16:28
【问题描述】:

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

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);
    })
}

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

【问题讨论】:

  • 尽量不要设置res 标头。
  • @MukeshSharma 我尝试了很多带有标题的变体,但没有人帮助。

标签: javascript node.js file express


【解决方案1】:

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

res.send(body)

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

【讨论】:

  • 与此响应相同。它下载文件,文件大小也正确,但您无法打开它。
猜你喜欢
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
相关资源
最近更新 更多