我在尝试将一些数据从 Java 传递到 JS 时遇到问题。
原始数据的类型为byte[]
。
在我使用的 Java 端:
byte[] data = some_data;
return Base64.getEncoder().withoutPadding().encodeToString(data)
在 JS 方面我尝试使用:
atob(b64Data)
当我这样做时,我遇到了主题错误:
DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
注意:删除 .withoutPadding()
会产生相同的结果。
我的问题是,如何修改代码以使错误不再出现?
最佳答案
看来问题出在 Spring 端通过 WebSocket/SockJS 的 STOMP 客户端,而不是编码数据本身。
虽然数据是从带有签名的方法发送的
公共(public)字符串 getDataForExcelFile
通过 WebSocket 得到的结果如下所示:
FrameImpl {command, headers, ack, binaryBody, body, (...) }
所以而不是
atob(b64Data)
我需要使用atob(b64Data.body)
。
关于javascript - 尝试在 JS 中解码已用 Java 编码的 Base64 时出现 "The string to be decoded is not correctly encoded "错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56237737/