在Grails中解码base64图像[重复]

Posted

技术标签:

【中文标题】在Grails中解码base64图像[重复]【英文标题】:Decode base64 image in Grails [duplicate] 【发布时间】:2015-09-03 16:19:16 【问题描述】:

我有一个 post api,我在其中发送一个包含 base64 编码图像的 json 字符串。下面是 json 字符串

 "imageData":"base64encoded string",
  "status":"1"

其中base64encode字符串是iVBORw0KGgoAAAANSUhEUgAAAHgAAACgCAIAAABIaz / HAAAAAXNSR0IArs4c6QAA \ r \ nABxpRE9UAAAAAgAAAAAAAABQAAAAKAAAAFAAAABQAABWL3xrAqoAAEAASURBVHgB \ r \ nlL2Fe1t7mueZme6uewNGMUu2LNkyySSjDJKZmZkSO8zM7CTmmJnZYbxUVbdgsKp7 \ r \ nqqdrdp P>

我无法发布完整的编码,因为它太长了。如何将此编码字符串转换为服务器端的图像文件。实际上我想从那里将​​图像上传到 ftp 服务器上。

【问题讨论】:

【参考方案1】:

Base64 使用 Ascii 字符发送二进制文件,因此要检索图像,您基本上必须将 Base64 字符串解码回字节数组并将其保存到文件中。

String encoded = 'iVBORw0KGgoAAAANSUhEUg' // You complete String
encoded.replaceAll("\r", "")
encoded.replaceAll("\n", "")
byte[] decoded = encoded.decodeBase64()
new File("file/path").withOutputStream 
  it.write(decoded);

编辑:编码字符串中的\r\n 字符存在无效字符问题,您必须将base64 字符串放在一行中才能对其进行解码。我更新了示例代码来做到这一点。

【讨论】:

感谢您的回复,我已经尝试过了,然后它抛出错误消息:base64 value 中的错误字符 仍然出现同样的错误。 我知道这是旧的,但问题是 replaceAll 不会改变字符串。你需要做一些类似编码 = encoded.replaceAll('[\r\n]', '')

以上是关于在Grails中解码base64图像[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中将 Base64 字节数组解码为图像

在python中将base64编码的图像解码为原始图像

MiniMagick无法编写解码的Base64图像

在 laravel 中解码和移动 base64 编码的图像

在 laravel 中验证 base64 解码图像

如何解码base64 fbx嵌入图像