配置Spring Boot內置Tomcat的maxPostSize值,以傳輸圖片的base64編碼數據

背景

前端頁面表單輸入數據較多,包含多個文本、多張圖片,在數據未壓縮的情況下,最終上傳失敗。

問題一: post請求傳輸數據時,後端報數據量過大,超出了最大閾值
解決:

  1. 外置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,就可以不限制了大小了
    
  2. 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章