【问题标题】:Node.js: Responding base64 encoded images into a JSONNode.js:将 base64 编码图像响应为 JSON
【发布时间】:2017-04-03 07:42:23
【问题描述】:

我的数据库中有所有 base64 格式的图片以及额外数据(创建、喜欢、所有者等)。

我想实现一个 /pictures GET,它返回带有图片数据的 JSON,例如:

图片数据

[{
   "creation": 1479567470124,
   "data": "data:image/jpg;base64,R0lGODlhPQ...",
   "ownerId": "cbd4dd05-193c-4e93-8e76-cae055adb046",
   "likes": 23
},
{
   "creation": 1479566234367,
   "data": "data:image/jpg;base64,A0dFSfdsf34SD...",
   "ownerId": "24170e4d-246f-4c77-b493-a56bde870169",
   "likes": 4
}]

API 路由

app.get('/pictures', (req, res) => {
    const { last, limit } = req.query;

    db.getPictures(last, limit)
    .then(pictures => res.status(201).jsonp(pictures))
    .catch(err => res.status(500).send(err));
});

问题

问题在于数据字段(包含base64 编码图像的字段)是如此HUGE。并且不可能将巨大的 json 发送到响应中。

我的问题是怎么做...有什么办法吗?也许在流中?怎么样?

任何建议都会很棒????

注意:图片应以base64编码保存到数据库中(公司要求)

非常感谢!

【问题讨论】:

  • 你能解决这个问题吗?
  • 我不记得了!!呵呵 很久以前
  • 我能理解。哈哈哈...如果我提供静态图像可以吗?我现在已经这样做了。
  • 说实话,我不记得了。大约 4 年前,我在 stackoverflow 中问过这个问题,我不记得上下文以及我应用了什么解决方案。
  • 完全没问题。谢谢:)

标签: javascript json node.js express base64


【解决方案1】:

是的,您可以使用流。

此示例使用文件,但很容易使其与其他内容一起使用。

https://www.sitepoint.com/introduction-to-streams/


编辑

不,你不能使用application/json,你的回复类型应该是arraybuffer。然后,因为你知道数据是怎样的,所以用 json 解析器解析响应......

在我看来,做你需要的最好的方法是拆分响应

构建两个不同的 API,第一个是纯 json api,返回图片的所有元数据,第二个将图像作为流返回。 作业的最后一部分属于需要合并两个响应的客户端。

【讨论】:

  • 是否可以像流一样只发送带有数据字段的 JSON,或者我需要像流一样发送 JSON?如果两者都可能,哪个更好?谢谢
猜你喜欢
  • 2018-09-25
  • 2014-11-14
  • 1970-01-01
  • 2017-01-09
  • 2022-11-30
  • 2016-10-31
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多