如何避免Java接收base64字符串的坑
目录
如何避免Java接收base64字符串的坑?
一、问题发现
1.可能因为base64字符太长,导致后端处理时出错,表现为前端请求报400错误;
2.前端传数据到后端时可能base64字符串中的特殊字符被替换,例如+被替换成空格,表现为上传的图片不完整
二、问题解决
1.问题1解决方法:
1.1.在配置文件中设置server.max-http-header-size(最大http请求头大小),其默认值为8KB,通常图片的base64会超过默认值,但是也不是越大越好(我设置2MB,然后前端再限制一下图片的大小或者压缩图片),大了反而有大问题,详情请看
2.问题2解决方法:
2.1.前端对base64字符串编码之后再传给后端处理,后端不需要解码,因为接收base64字符串时springmvc会进行一次解码
2.2.也可以通过将被替换的字符手动换回来,不过不推荐使用,你不知道究竟还有没有其他特殊字符被替换
String replace = base64.replace(" ", "+");
MultipartFile multipartFile = BASE64DecodedMultipartFile.base64ToMultipart(replace);