上傳大檔案時,服務報以下錯誤
org.springframework.web.multipart.support.missingservletrequestpartexception: required request part 'file' is not present
一開始以為是服務問題,看報錯資訊,顯示file沒有,這個資訊不太準確。之前設定了上傳大小為50m,超過50m時會報超出大小的異常,也會丟擲上面這個異常。
spring:
servlet:
multipart:
enabled:true
max-file-size:150mb
max-request-size:150mb
之後設定了上傳大小之後,錯誤消失了,但之前上傳的檔案一般在80m以下,沒試過更大的檔案,這次上傳的檔案達到90幾m,於是一直在報這個錯。因為上面拋的這個異常類似於tomcat容器在接收資料時,資料不全,才會觸發後面沒有檔案這個異常,所以猜測是檔案沒有傳到服務裡面,在前面就斷掉了。於是直連服務上傳了一下,發現是好的,驗證了我的猜測。那問題肯定就在zuul上了,因為zuul是對外暴露的唯一入口,不管普通介面還是檔案上傳都會呼叫zuul。
定位是zuul的問題,但沒找到具體是什麼問題,一開始猜測是不是zuul呼叫服務超時了,因為上傳大檔案時間比較長,zuul呼叫服務時間過長,就斷開連線了。
ribbon:
connecttimeout
:60000
readtimeout
:60000
zuul:
host:
socket-timeout-millis:
60000
connect-timeout-millis:
60000
把zuul超時時間設定為1分鐘,然後再嘗試,發現大概15s左右zuul就會顯示呼叫失敗,而服務中還是報那個錯。這麼看是zuul在上傳了檔案一段時間之後就斷開了,但檔案沒傳完,具體原因不得而知。
到sping 官網上查遍了資料,發現了下面這個:
意思是在上傳大檔案時,可以在呼叫的服務前面加/zuul/,以繞過multipartprocessing,這個是用來上傳時檢查檔案大小之類的。於是在呼叫的服務前面加/zuul/再試了一下,果然好了。
解決通過zuul上傳檔案,檔名中文亂碼問題
最近這個問題一直困惑著專案組。檔案上傳,請求不經過zuul的時候,一切正常。沒有出現亂碼問題。一旦請求經過zuul,上傳後獲得的檔名,就會出現中文亂碼問題。中文會變成?下面貼出來我zuul的部分配置 zuul sensitive headers access control allow origin...
php大檔案的上傳
1.使用php 的創始人 rasmus lerdorf 寫的apc擴充套件模組來實現 http pecl.php.net package apc apc實現方法 複製php內容到剪貼簿 php if server request method post elseif isset get progre...
大檔案上傳遇到的問題
max file uploads 60 upload max filesize 300m post max size 300m 重啟nignx apache etc init.d nginx restart 重啟fpm nginx伺服器修改php.ini後需要重啟php fpm才能生效 先檢視php...