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的字符串装换成文件,在后端使用文件来接收。

  • 相关阅读:
    Hello World
    JAVA环境变量配置
    基本的Dos命令
    博客的重要性
    MySQL——合并查询结果
    mysql中使用正则表达式查询
    MySQL高级查询
    MySQL之常用函数
    MySQL之多表操作
    MySQL之增删改查
  • 原文地址:https://www.cnblogs.com/LJing21/p/11214958.html
Copyright © 2011-2022 走看看