- 場景:圖片上傳OSS存儲,接口拿字符串去接前端傳的base64碼,服務器打印入參傳的值,發現和前端打印的值有所區別,服務器中打印的值所有+號全部變成空格。
- 解決辦法:
- Java中使用:url = url.replaceAll(" ","+");方式將空格換成+號。
- 前端將base64編碼后的數據再進行urlencode編碼。
- 場景:圖片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的字符串裝換成文件,在后端使用文件來接收。