上傳文件出現413 Request Entity Too Large問題

  SpringBoot項目中需要上傳文件,突然出現當文件大於1MB時,接口完全無法訪問的情況,打開Fiddler,接口直接報紅,說明根本就沒有進入到接口。在這裏插入圖片描述
  那麼出現這種問題的原因是什麼了?多方查閱資料和結合實際情況,才發現是公司換了服務器,使用了Nginx,運維人員又沒有做相應的配置,這樣Nginx默認最大能夠上傳1MB文件,大於1MB的文件自然無法上傳。

解決方案如下:
  打開nginx.conf(沒權限找運維人員)在http{ }中設置:client_max_body_size 50m,即:

client_max_body_size 50M

  重啓Nginx即可。當做完這些依然無效時,請檢查網關(zuul)是否對文件上傳也做了限制。

##打開自定義以配置
spring.http.multipart.enabled=true
##最大單文件限制
spring.http.multipart.max-file-size=50MB
##總上傳的數據大小
spring.http.multipart.max-request-size=50MB

  重啓網關(不重啓沒效果),依然不起作用,繼續檢查Spring或者SpringBoot的配置, 如果出現

org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field pic exceeds its maximum permitted size of 1048576 bytes.

org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field pic exceeds its maximum permitted size of 1048576 bytes.

  因爲springboot內置tomact的的文件傳輸默認爲1MB,大於1MB的文件是無法上傳的,加入配置(我的SpringBoot版本爲1.5.6)

#配置開啓,打開自定義
spring.http.multipart.enabled =true  
##可以不要
spring.http.multipart.file-size-threshold =0
#最大單文件限制小
spring.http.multipart.max-file-size = 50MB
#總數據的大小
spring.http.multipart.max-request-size=50MB

  Springboot 2.0之後的版本,需要改變:

#單文件限制大小
spring.servlet.multipart.max-file-size = 50MB
#總文件限制的大小
spring.servlet.multipart.max-request-size=50MB

總結

文件無法上傳大概就只有以下四個方面的原因

  1. 服務器對上傳文件帶下做了限制(Nginx,Apache,IIS等服務器,文中僅對Nginx配置做了說明)
  2. 網關對上傳文件大小做了限制,此時添加配置即可。
  3. SpringBoot/Spring對上傳文件大小做了限制,添加配置即可。
  4. 文件確實過大,前後端鏈接超時,自動斷開鏈接(可自己設置,不做詳述)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章