Springboot上传文件临时目录无效

       一个奇葩问题,虽然解决了,但仍是没弄清楚,小记一笔。前端

       年后回来,测试人员对年前的3次迭代的功能进行了回归测试,而后发现全部excel导入的功能都失效了。做为后台开发人员,固然是第一时间打开运行日志排查缘由啦。但奇怪的是,后台日志中并无ERROR信息......因而乎转战到前端,经过chrome的开发工具发现以下异常:java

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

.......spring

        从异常信息来看,其实不难理解,就是上传文件的临时目录失效了,百度之后确实如此。可是为何过完年回来目录就忽然失效了呢?chrome

        继续查询相关资料后了解到,springboot启动时会建立一个用于上传文件的临时目录,而系统会在10天后自动清除该目录。tomcat

解决方法:springboot

一、重启服务,从新生成目录;服务器

二、手动建立该目录;app

三、在启动服务的main方法中,添加如下代码,指定上传文件的目录:工具

@Bean

MultipartConfigElementmultipartConfigElement() {

MultipartConfigFactory factory =new MultipartConfigFactory(); 

factory.setLocation("/data/apps/temp"); 

return factory.createMultipartConfig();

}

四、在应用的配置文件中添加如下配置,原理同3:

server:

    tomcat:

        basedir: /data/apps/temp

        实践证实,以上方法都没有解决个人问题...

        接着,我进入到服务器的tmp目录,发现里面已经建立了多个tomcat的临时文件,看日期应该是我屡次重启产生的。那么正常状况下,解决方法1应该已经生效了(虽然不能永久性解决这个问题),为何仍是报异常呢?使人蛋疼的是,新建立的临时目录的端口都是8491,就是我重启的服务的端口,可是异常中的临时目录端口是8769,而8769正是zuul网关的端口。因而,我在zuul的配置文件里加上了解决方法4的配置信息,果真就行了...

        令我不解的是,若是是zuul的问题,那么一开始应该就没法上传,而不会等到年后才出现问题。

文件地址:https://www.jianshu.com/p/cfbbc0bb0b84
相关文章
相关标签/搜索