在Grails中解码base64图像

在Grails中解码base64图像,grails,groovy,Grails,Groovy,我有一个post api,在这里我发送一个json字符串,其中包含base64编码的图像 { "imageData":"base64encoded string", "status":"1" } 其中Base64编码字符串为IVBORW0KggoaaaAnsuhuheugaaahgaaaacgcaiaabiaz/Haaaaaaxnsr0IARS4C6QAA\r\nABXPRE9UAAAAAGAaaaaaaaaaaaababababababababababababwL3XRAqoaaaasu

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

{ "imageData":"base64encoded string",
  "status":"1"
}
其中Base64编码字符串为IVBORW0KggoaaaAnsuhuheugaaahgaaaacgcaiaabiaz/Haaaaaaxnsr0IARS4C6QAA\r\nABXPRE9UAAAAAGAaaaaaaaaaaaababababababababababababwL3XRAqoaaaasurbhGB\r\nL2FE1T7MUEZMEWNGMUU2LKYYSSJKZMZKSO8CTMMJNZYBXUVBDGSKP7\r\nQDRDP


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

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=encoded.replaceAll('[\r\n]','')的操作