Nodejs - 从 url 获取文件并将内容发送到客户端

Thu*_*ien 1 javascript fetch fs node.js express

由于某种原因,我不想公开共享 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 上四处查看,但刚刚从磁盘读取文件并发送给客户端得到了答案。我想要的只是将图像内容重定向到客户端,而不是将文件保存到磁盘。

谢谢。

ner*_*ane 5

假设您想将文件的内容作为缓冲区从某个 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);
Run Code Online (Sandbox Code Playgroud)

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

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