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');
});
出于某种原因,我不想分享 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');
});