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

Nodejs - Fetch file from url and send content to client

出于某种原因,我不想分享 URL public (sercet url),

我的工作流程如下:

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

Api: 我的网站.com/api/image_abc.jpg

我有 Nodejs Express 服务器从 url:

获取文件

例如:sercret_url.com/image_abc.jpg

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

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

谢谢。

假设你想return从某个URL到客户端的文件内容作为缓冲区,这是我建议的解决方案

使用 axios 获取文件,return 将缓冲区发送给您的客户端

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