【问题标题】:Nodejs - Fetch file from url and send content to clientNodejs - 从 url 获取文件并将内容发送到客户端
【发布时间】:2022-01-12 06:44:09
【问题描述】:

出于某种原因,我不想公开 URL(sercet url),

我的工作流程如下:

客户端向我的服务器发送 API 请求:

API:mywebsite.com/api/image_abc.jpg

我有 Nodejs express 服务器从 url 获取文件:

例如:sercret_url.com/image_abc.jpg

然后从 Nodejs 的响应图像内容中,我将图像内容发送回客户端并显示为 image_abc.jpg

我在 stackoverflow 上环顾四周,但刚刚从磁盘读取文件并发送到客户端得到了答案。我想要的只是将图像内容重定向到客户端,而不是将文件保存到磁盘。

谢谢。

【问题讨论】:

  • 我了解您想从 URL 中获取文件并作为缓冲区返回给客户端吗?

标签: javascript node.js express fetch fs


【解决方案1】:

假设您想将某个 URL 中的文件内容作为缓冲区返回给客户端,这是我建议的解决方案

使用 axios 获取文件并将缓冲区返回给您的客户端

  const axios = require('axios');
  let URL='some-valid-url'
  const response = await axios.get(
    URL,
    { responseType: 'arraybuffer' }
  );
  const buffer = Buffer.from(response.data, 'utf-8');
  res.status(200).send(buffer);

如果您想将其保存到您的服务器,您可以使用 fs 如下将文件写入您选择的文件夹

  fs.writeFile(fileName, buffer, (err) => {
      if(!err) console.log('Data written');
    });

【讨论】:

  • 哦,这绝对是工作!谢谢一吨!你拯救了我的一天。
猜你喜欢
  • 2017-08-15
  • 2015-10-22
  • 1970-01-01
  • 2020-07-28
  • 2017-07-25
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 2015-05-02
相关资源
最近更新 更多