element上传大文件就报错500_springboot上传文件时500错误,提示临时目录无效

金山竹影几千秋,云索高飞水自流,万里长江飘玉带,一轮银月滚金球,

远自湖北三千里,近到江南十六州,美景一时观不透,天缘有分画中游!

错误背景:年前项目测试好之后一直在服务器上运行着,今天突然之间领导来了说不能用了,然后我上服务器看了一下日志也没有错误,但是在谷歌浏览器上却报了以下错误:

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

path: "/api/v0/dataset-service/dataset"

status: 500

timestamp: "2019-05-28T06:55:21.002+0000"

找了好久只发现是文件上传的报的错,看代码也没有错误,继续查询相关资料后了解到,springboot启动时会创建一个用于上传文件的临时目录,而系统会在10天后自动清除该目录。

后来在网上搜到了以下四种解决方法:

1、重启服务,重新生成目录;

2、手动创建该目录;

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

@Bean

MultipartConfigElementmultipartConfigElement() {

MultipartConfigFactory factory =new MultipartConfigFactory();

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

return factory.createMultipartConfig();

}

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

server:

tomcat:

basedir: /tmp/uploadcache

接着,我进入到服务器的tmp目录,创建 /tmp/uploadcache 目录

刚才的报错显示的确实我网关的端口报的错,发现里面已经创建了多个tomcat的临时文件,我的服务创建的临时目录的端口都是8989,就是我重启的服务的端口,但是异常中的临时目录端口是10201,而10201正是zuul网关的端口。于是,我在zuul的配置文件里加上了解决方法4的配置信息,果然就好了...

个人理解:是因为Linux每十天会自动删除临时文件,由于是springcloud程序都是走的网关,我的网关一直没有动过,就是服务重启了依然会报错的原因,因为都是走的网关,所以网关临时文件删除之后,便找不到该文件,方法四配置一个固定目录后变不会再报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值