javascript - 尝试在已用 Java 编码的 JS 中解码 Base64 时出现“要解码的字符串未正确编码”错误
问题描述
尝试将一些数据从 Java 传递到 JS 时出现问题。原始数据的类型为byte[]
。
在我使用的 Java 方面:
byte[] data = some_data;
return Base64.getEncoder().withoutPadding().encodeToString(data)
在 JS 方面,我正在尝试使用:
atob(b64Data)
当我这样做时,我遇到了该主题的错误:
DOMException: 无法在 'Window' 上执行 'atob': 要解码的字符串未正确编码。
注意:删除.withoutPadding()
会产生相同的结果。
我的问题是,如何重新编写代码以使错误不再出现?
解决方案
看来问题出在 Spring 端通过 WebSocket/SockJS 的 STOMP 客户端,而不是编码数据本身。
虽然数据是从带有签名的方法发送的,但
public String getDataForExcelFile
通过 WebSocket 得到的结果如下所示:
FrameImpl {command, headers, ack, binaryBody, body, (...) }
所以
atob(b64Data)
我需要使用atob(b64Data.body)
.
推荐阅读
- ansible - 询问是否安装包时的多个 vars_prompt 任务条件
- r - 调用中不包含错误和准确性:模型 - 随机森林模型
- python - 如果熊猫上的某些字符相同,如何替换字符串?
- python - 在迭代框架时添加后缀和重命名
- prometheus - 上传文件大小的 Prometheus 指标
- debugging - 在调试期间在哪里以及如何查看 vscode 中的返回值(或者如果在 gdb 中不可能)
- sql-server - 无法将 Powershell 连接到 AzureSQL 数据库
- symfony - Symfony 使用多个实体
- highcharts - 屏幕压缩到 1280*1024 分辨率时,Highcharts 图表 x 轴标签丢失
- c# - 如何从 datetimepicker 仅获取日期的分隔值?