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 上四处查看,但刚刚从磁盘读取文件并发送给客户端得到了答案。我想要的只是将图像内容重定向到客户端,而不是将文件保存到磁盘。
谢谢。
假设您想将文件的内容作为缓冲区从某个 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)