springboot上传文件报临时文件找不到
作者:互联网
异常信息
报错日志:
The temporary upload location [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] is not valid |
异常原因
在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,10天就会被系统机制自动删除掉。所以会出现找不到该路径的异常
解决方式:
1、重启服务器,每次重启服务,tomcat会重新建立临时文件夹(不推荐)
2、在系统上手动添加对应的临时文件目录(不推荐,还是可能会被清理掉)
3、修改配置文件
在application.yml重新配置一个文件目录,然后重启项目(推荐,亲测有效)
# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹
server.tomcat.basedir=/tmp/upload_file
或
servlet.multipart.location=/tmp/upload_file
4、修改配置类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.MultipartConfigElement;
import java.io.File;
@Configuration
public class MultipartConfig {
@Value("${location.tempDir:/tmp/tomcat_upload}")
private String tempDir;
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
File tmpDirFile = new File(tempDir);
// 判断文件夹是否存在
if (!tmpDirFile.exists()) {
//创建文件夹
tmpDirFile.mkdirs();
}
factory.setLocation(tempDir);
return factory.createMultipartConfig();
}
}
异常信息
报错日志:
The temporary upload location [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] is not valid |
异常原因
在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,10天就会被系统机制自动删除掉。所以会出现找不到该路径的异常
在Windows上临时路径会创建在
C:\Users\qjc\AppData\Local\Temp |
PS:最后面的“.”后面跟的是对应项目的端口号
所以测试的时候,可以删除这个临时路径让异常复现,然后用下面的方式进行解决:
1. 临时解决方式:
可以重启服务,让springboot重新生成临时路径,当然,这个不可取,不建议再生产环境使用
2.修改配置文件
在application.yml重新配置一个文件目录,然后重启项目(推荐,亲测有效)
# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹 server.tomcat.basedir=/data/apps/temp |
3.修改配置类
配置类配置临时文件存储目录(测试无效,原因未知)
@Bean MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); factory.setLocation(“/data/apps/temp”); return factory.createMultipartConfig(); } |
标签:tmp,文件目录,springboot,tomcat,factory,文件夹,import,临时文件,上传 来源: https://www.cnblogs.com/limeirong/p/16362601.html