java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot设置io临时目录

SpringBoot如何设置io临时目录

作者:fengchengwu2012

在部署Spring Boot项目时,使用`MultipartFile`上传文件可能会遇到临时目录被 操作系统的临时目录回收导致的问题,解决方法包括配置Tomcat的`basedir`、配置`multipart`的`location`、启动JAR时指定`tmpdir`以及编码注入

在部署springboot项目,使用MultipartFile上传文件会出现以下异常

Failed to parse multipart servlet request; nested exception is java.io.IOException: 
The temporary upload location [/tmp/tomcat.3016596448718765136.18001/work/Tomcat/localhost/xx] is not valid"

出现这种情况的原因是由于在部署项目的时候没有指定应用的临时io目录,spring会直接使用操作系统的临时目录,而操作系统的临目录会在一定的周期类回收,导致隔一段时间后上传文件会出现上述问题。

解决上述文件有很多种方式,根据网友经验,总结以下四种设置临时目录的方法:

一、配置tomcat的basedir

server:
  tomcat:
    basedir: /usr/local/temp

二、配置multipart的location

spring:
  servlet:
    multipart:
      location: /usr/local/temp

三、启动jar指定tmpdir

java -jar  -Djava.io.tmpdir=/usr/local/temp  xxx.jar

四、编码注入

@Bean
public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    factory.setLocation("/usr/local/temp");
    return factory.createMultipartConfig();
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文