Spring webflux上传文件中文名字乱码

2021-05-17  本文已影响0人  Anson_1f2a

详情

小记今天解决的一个bug,项目使用Spring webflux实现上传文件到服务器的功能,但长期以来文件凡是中文名字的是乱码,同事被困扰了很长一段时间,她一直怀疑是前端组件的问题,没有正确编码,前端使用vue实现。一直没找到根本原因,但找到网页传过来的编码,于是写了一行代码进行强行转码。

val filename = String(file.filename().toByteArray(charset("ISO-8859-1")), charset("UTF-8"))

我觉得该问题有点蹊跷,不应该发生,必须解决,于是便有了下文。

过程

我不太确定是前端还是后端代码的bug,因此我尝试了以下几种不同的情况

  1. react做的前端,使用antd上传的组件,后端使用我们的项目
  2. spring web开发的后端,vue前端
  3. 项目服务端(webflux),vue前端
  4. 新写了一个服务端,只实现上传的接口,但webflux的版本不一样,测了两个版本2.1.12.4.5,前端还是vue
    测试结果是原项目的服务端接口乱码(1和3),其他都正常

结论

项目的webflux版本有问题,使用的是spring-boot 2.4.4-SNAPSHOT,于是我们尝试升级到2.4.5居然不乱码了!被spring坑惨了!吐血~

上一篇 下一篇

猜你喜欢

热点阅读