背景
前端頁面表單輸入數據較多,包含多個文本、多張圖片,在數據未壓縮的情況下,最終上傳失敗。
問題一: post請求傳輸數據時,後端報數據量過大,超出了最大閾值
解決:
-
外置Tomcat:直接在server.xml裏面添加或者修改maxPostSize=“0”
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" URIEncoding="UTF-8" maxThreads="3000" compression="on" compressableMimeType="text/html,text/xml" maxPostSize="0" />沒錯就是修改這裏的maxPostSize的值,默認是1024,改成0,就可以不限制了大小了
-
spring boot內置tomcat:修改Spring Boot內置Tomcat的maxPostsize值,在application.yml配置文件中添加以下內容:
server: tomcat: max-http-post-size: -1
問題二 解決了應用服務器請求數據量過大問題後,在下一步寫入DB時又遇到了類似問題,超出了數據庫中最大允許數據包默認配置值。
解決: 修改DB的max_allowed_packet值
USE demo;
set global max_allowed_packet = 3*1024*1024*10; # 改爲30M
show VARIABLES like '%max_allowed_packet%'; # 重啓DB連接生效
Note: MySQL中max_allowed_packet 的 默認配置:16777216 = 16 * 1024 * 1024,即16M
問題三 數據庫存儲圖片base64編碼數據的字段類型選擇(mysql)
解決: 可根據實際大小選擇
TINYTEXT 256bytes
TEXT 64kb
MEDIUMTEXT 16Mb
LONGTEXT 4GB