如何在 Java 中解码使用 readAsDataURL() 由 javascript 生成并由 Json 发送的字符串?

Bre*_*eal 4 javascript java base64 json angularjs

我正在尝试解码由以下生成的字符串:

Javascript代码:

fileReader.readAsDataURL(fileToLoad);
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

这样做,我收到一个异常:

java.lang.IllegalArgumentException: 非法 base64 字符 3a

我该怎么办?

PS.: 我使用 Maven 导入依赖项

小智 5

实际上我只是遇到了同样的问题。这就是我解决它的方法。

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

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

为了解决它,我只是使用了org.apache.commons.codec.binary.Base64 中的byte[] data = Base64.decodeBase64(newRadFile)而不是 Base64.getDecoder().decode(newRadFile);

然后,如果你想从你的字节数组创建一个文件,你可以使用FileUtils.writeByteArrayToFile(new File("test.jpg"), data)来自org.apache.commons.io.FileUtils ;

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