base64码通过http传输 +号变 空格 以及 图片编码后字符串较长导致POST提交失败 问题解决...


 

  • 场景:图片上传OSS存储,接口拿字符串去接前端传的base64码,服务器打印入参传的值,发现和前端打印的值有所区别,服务器中打印的值所有+号全部变成空格。
  • 解决办法:
  1. Java中使用:url = url.replaceAll(" ","+");方式将空格换成+号。
  2. 前端将base64编码后的数据再进行urlencode编码。
  • 参考:https://www.cnblogs.com/jpfss/p/10037984.html

 

  • 场景:图片base64编码通过POST提交,KB大小的图片上传没问题,但是6MB左右大小的图片(相机照的图片)上传后接口拿到的是null,网上说POST是没有大小限制的,HTTP协议规范也没有大小限制,排查了下不用base64用文件格式上传没问题,将内容copy出来用Postman上传也没问题,OSS上面也没限制,那问题就出在容器上了,我用的是tomcat容器,查了下tomcat上的限制找到解决办法。
  • 解决办法:
  1. 配置Tomcat的server.xml。
    Tomcat的版本低于等于7,设置maxPostSize=“0” 表示post参数无限大。
    Tomcat的版本大于等于8,设置maxPostSize=“104857600” 表示post参数最大100MB。

  2. 将base64的字符串装换成文件,在后端使用文件来接收。

 

转载于:https://www.cnblogs.com/LJing21/p/11214958.html

你可能感兴趣的:(java,前端,json,ViewUI)