【问题标题】:Binary data from mongodb gets corrupted来自 mongodb 的二进制数据已损坏
【发布时间】:2019-08-30 07:14:16
【问题描述】:

当我上传照片时,它会转换为 base64,然后当我使用 Mongoose 发送到 mongodb 时,它会保存为二进制。但是当我从数据库中调用同一张图片时,它会以 Buffer 数组的形式返回。转换为 base64 后,它作为 base64 字符串返回,但与原始 base64 完全不同。新的 base64 已损坏,无法在浏览器中呈现。 下面是不同字符串的图片

这是最初的 base64

这是缓冲区数组

这是使用 Buffer.from(avatar).toString('base64') 从缓冲区数组转换后损坏的 base64。 请注意,我在浏览器中渲染之前附加了“data:image/png;base64”,但它仍然没有渲染。

请有人告诉我我做错了什么吗?

【问题讨论】:

  • 能不能也贴一下相关代码

标签: node.js mongodb vue.js mongoose socket.io


【解决方案1】:

最好的解决方案是转换为 png 或 jpg 文件并仅上传路径并将图像保存到文件夹。

【讨论】:

    【解决方案2】:

    这是我解决它的方法。 我从二进制转换为 utf8 而不是 base64。

    两者之间存在巨大差异 Buffer.from(binary_data, 'binary').toString('utf8')

    Buffer.from(binary_data, 'binary').toString('base64')

    【讨论】:

      猜你喜欢
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 2021-05-24
      • 2013-04-14
      相关资源
      最近更新 更多