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


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

    • 场景:图片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。

      <Connector connectionTimeout="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="104857600">
    2. 将base64的字符串装换成文件,在后端使用文件来接收。

  • 相关阅读:
    java中怎么跳出两层for循环
    卡斯特信号有限公司面经
    唯一索引、普通索引、主键索引的区别
    ES中的查询操作
    sql:union 与union的使用和区别
    Java中多个集合的交集,并集和差集
    Angular动态组件
    Angular惰性加载的特性模块
    spring定时器
    索引
  • 原文地址:https://www.cnblogs.com/LJing21/p/11214958.html
Copyright © 2011-2022 走看看