如何在java中使用readAsDataURL()并使用json发送的javascript生成的字符串进行解码?

时间:2016-02-18 15:21:33

标签: javascript java angularjs json base64

我试图解码由以下内容生成的字符串:

Javascript代码:

fileReader.readAsDataURL(fileToLoad);

Ps。:它是编码文件的一部分。

在获取文件进行编码后,我放入Json并使用POST方法发送到restfull服务。

Java代码(restfull):

String radiationFilePath = json.getString("radiationFilePath");
String newRadFile = radiationFilePath.replace("\\", ""); \\I read that it is a needed because JsonObject add some '\'
byte[] radiationFileAsBytes = Base64.getDecoder().decode(newRadFile);

这样做,我收到一个例外:

  

java.lang.IllegalArgumentException:Illegal base64 character 3a

我该怎么办?

PS:我正在使用Maven导入依赖项

1 个答案:

答案 0 :(得分:3)

实际上我只是遇到了同样的问题。这是我如何解决它。

首先,您不需要这样做: String newRadFile = radiationFilePath.replace(" \","");

但你必须改为 String newRadFile = radiationFilePath.split(",")[1]

要解决这个问题,我只使用 org.apache.commons.codec.binary.Base64 中的 byte [] data = Base64.decodeBase64(newRadFile)而不是 Base64.getDecoder()进行解码(newRadFile);

然后,如果要从字节数组创建文件,可以使用 FileUtils.writeByteArrayToFile(新文件(" test.jpg"),数据) org.apache.commons.io.FileUtils

希望它有所帮助, 阿德里安。