我正在尝试通过GET方法从我的羽毛服务器获取图片。尝试通过以下方式呼叫服务器
http://localhost:3030/uploads/945fdcbc5ef41f8d301c14d8cfb3c4ae536f4bffc0338091043ec5cf27b9bcff.png
应返回图像。相反,我得到如下响应:
{“ id”:“ 945fdcbc5ef41f8d301c14d8cfb3c4ae536f4bffc0338091043ec5cf27b9bcff.png”,“ uri”:“ data:image / png; base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACoCAMAAABt9SM9AAABqB /> D。
我的问题是:我得到Json响应并且必须将“响应的”内容类型更改为data:image / png才能直接在浏览器中查看图片,对吗?
答案 0 :(得分:0)
您可以使用<img src="${data.uri}">
直接在网站上显示此图像。
还可以在custom service middleware中更改内容类型和响应,将数据URI转换为缓冲区:
app.use('/uploads', uploadService, (req, res) => {
// res.data is the response. We need only the base64 payload without the prefix
const base64Data = res.data.uri.replace('data:image/png;base64,', '');
const buffer = Buffer.from(base64Data, 'base64');
res.set('Content-Type', 'image/png');
res.send(buffer);
});
现在在访问URL时应该显示一个图像。
答案 1 :(得分:0)
感谢@Daff!我的代码现在可以使用以下解决方案:
app.use(
"/uploads",uploadservice.....,
(req, res, next) => {
const base64Data = res.data.uri.replace("data:image/png;base64,", "");
const buffer = Buffer.from(base64Data, "base64");
res.set("Content-Type", "image/png");
res.send(buffer);
next();
}
);