Feathers.js-内容类型-GET

时间:2019-03-22 09:17:19

标签: express feathersjs

我正在尝试通过GET方法从我的羽毛服务器获取图片。尝试通过以下方式呼叫服务器

  

http://localhost:3030/uploads/945fdcbc5ef41f8d301c14d8cfb3c4ae536f4bffc0338091043ec5cf27b9bcff.png

应返回图像。相反,我得到如下响应:

  

{“ id”:“ 945fdcbc5ef41f8d301c14d8cfb3c4ae536f4bffc0338091043ec5cf27b9bcff.png”,“ uri”:“ data:image / png; base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACoCAMAAABt9SM9AAABqB /> D。

我的问题是:我得到Json响应并且必须将“响应的”内容类型更改为data:image / png才能直接在浏览器中查看图片,对吗?

2 个答案:

答案 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();
    }
  );