Post請求form-data格式時請求返回500的問題

問題描述:測試反饋說系統全部的接口,採用post請求,數據格式用form-data時,全部的接口不能成功調用,但使用application/x-www-form-urlencoded或者application/json則沒有問題。使用Postman測試,響應以下:html

{
    "timestamp": 1532932938640,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "org.springframework.web.multipart.MultipartException",
    "message": "Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.8933035133061590431.8060/work/Tomcat/localhost/ROOT] is not valid"
}

其實看到這個,問題就已經很明顯了,就是/tmp/tomcat.8933035133061590431.8060/work/Tomcat/localhost/ROOT這個目錄找不到。而後手動建立了這個目錄,就恢復正常了。java

下面看看爲何會出現這個問題web

SpringBoot應用服務在啓動(java -jar 命令啓動服務)的時候,會在操做系統的/tmp目錄下生成一個tomcat*的文件目錄,上傳的文件先要轉換成臨時文件保存在這個文件夾下面。spring

既然是這樣,那咱們解決的方法就有如下幾種了:json

  1. 像上面同樣,手動建立這個目錄
  2. 重啓應用
  3. 在配置文件中指定tomcat的臨時目錄,這樣就不怕系統自動清理tmp了。配置如:
server.tomcat.basedir: /data/tomcat/temp

問題到這裏已經算是解決了,下面是關於form-data的一篇文章tomcat

談談form-data請求格式app

相關文章
相關標籤/搜索