场景:图片上传OSS存储,接口拿字符串去接前端传的base64码,服务器打印入参传的值,发现和前端打印的值有所区别,服务器中打印的值所有+号全部变成空格。
解决办法:
Java中使用:url = url.replaceAll(” “,”+”);方式将空格换成+号。
前端将base64编码后的数据再进行urlencode编码。
参考:https://www.cnblogs.com/jpfss/p/10037984.html
场景:图片base64编码通过POST提交,KB大小的图片上传没问题,但是6MB左右大小的图片(相机照的图片)上传后接口拿到的是null,网上说POST是没有大小限制的,HTTP协议规范也没有大小限制,排查了下不用base64用文件格式上传没问题,将内容copy出来用Postman上传也没问题,OSS上面也没限制,那问题就出在容器上了,我用的是tomcat容器,查了下tomcat上的限制找到解决办法。
解决办法:
配置Tomcat的server.xml。
Tomcat的版本低于等于7,设置maxPostSize=“0” 表示post参数无限大。
Tomcat的版本大于等于8,设置maxPostSize=“104857600” 表示post参数最大100MB。
<Connector connectionTimeout="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="104857600">
将base64的字符串装换成文件,在后端使用文件来接收。