在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图像[重复]的主要内容,如果未能解决你的问题,请参考以下文章