You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Base64编码的xls/xlsx文件解码后POI无法识别,如何正确解码无报错?

问题根因
  • 错误出在多余的字符串转码步骤:.xls/.xlsx属于二进制格式文件,并非UTF-8编码的纯文本文件。Base64解码后得到的字节数组本身就是完整的Excel原始二进制数据,你额外执行new String(解码字节, UTF_8).getBytes(UTF_8)的操作会不可逆地破坏二进制字节结构,导致POI工具无法识别该流为合法的Excel文件流。
修正方案

直接将Base64解码得到的字节数组封装为输入流即可,删除多余的转码步骤,替换原有InputStream fileContent = ...行的代码:

// 正确解码逻辑
byte[] rawExcelBytes = Base64.getDecoder().decode(fileContentEncoded);
InputStream fileContent = new ByteArrayInputStream(rawExcelBytes);
额外校验项

如果修改后仍有报错,可以排查以下两点:

  • 确认拆分得到的fileContentEncoded是纯Base64内容,没有残留data:application/vnd.ms-excel;base64,这类HTTP数据URI前缀,你当前按分隔符拆分取最后一段的逻辑要确保前缀清理干净。
  • 确认上传端的Base64编码规则和后端解码规则一致,避免出现URL安全编码、自动插入换行符这类不兼容的情况。

内容的提问来源于stack exchange,提问作者michaelpnrs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:24:03