Spring boot文件上传报错: The temporary upload location is not valid

最近在做Excel导入时,一次偶然的测试发现bug报错如下:

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [C:\Users\AppData\Local\Temp\tomcat.4266029690466887869.8037\work\Tomcat\localhost\ROOT] is not valid
	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:112)
	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:86)
	at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:79)
	at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1104)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:936)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)

产生问题的原因在于Spring boot项目在启动后,系统会自动在Temp目录下为其创建若干个目录作为临时文件夹。我对每份待解析的Excel文件都是用了Paths.get(url),此方法会将文件下载至系统的临时文件夹中。

很遗憾,这个临时存储路径已经不存在了

为什么会被清除,暂不清楚。

解决办法:

@Configuration
public class MultipartConfig {

    @Bean
    MultipartConfigElement multipartConfigElement(){
        MultipartConfigFactory multipartConfigFactory = new MultipartConfigFactory();
        String location = FileConstant.tempSavePath2;
        File tempFile = Paths.get(location).toFile();
        if(!tempFile.exists()){
            tempFile.mkdirs();// mkdirs能创建多级目录
        }
        multipartConfigFactory.setLocation(location);
        return multipartConfigFactory.createMultipartConfig();
    }
}

猜你喜欢

转载自blog.csdn.net/miaomiao19971215/article/details/85682884