springboot文件上傳報錯

異常信息:java

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1978174608501890996.8083/work/Tomcat/localhost/pmap] is not valid org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:112) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.linux

緣由:web

在linux系統中,springboot應用服務在啓動(java -jar 命令啓動服務)的時候,會在操做系統的/tmp目錄下生成一個tomcat*的文件目錄,上傳的文件先要轉換成臨時文件保存在這個文件夾下面。因爲臨時/tmp目錄下的文件,在長時間(10天)沒有使用的狀況下,就會被系統機制自動刪除掉。因此若是系統長時間無人問津的話,就可能致使上面這個問題。spring

解決方案:tomcat

  1. 從新啓動項目就行,會從新創建臨時文件夾
  2. 在配置文件中配置tomcat的臨時目錄
    server.tomcat.basedir=/home/tmp
  3. 寫個配置類,經過@Bean的方式配置目錄
    /**
     * 文件上傳臨時路徑
     */
     @Bean
     MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation("/home/tmp");
        return factory.createMultipartConfig();
    }
相關文章
相關標籤/搜索