Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary up

文章讲述了SpringBoot项目在启动时,由于在/tmp目录下创建的临时目录被系统自动清理,导致文件上传失败的问题。解决方案包括重启服务、手动创建临时目录以及在`application.properties`中设置自定义`baseDir`。同时,文中提到了Linux系统的tmp清理机制和如何查找SpringBoot的临时目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Failed to parse multipart servlet request;
nested exception is java.io.IOException:
The temporary upload location
[D:\Users\name\AppData\Local\Temp\tomcat.7906663526079040174.8080\work\Tomcat\localhost\demo] is not valid

错误信息意思 : 这个临时目录 D:\Users\name\AppData\Local\Temp\tomcat.7906663526079040174.8080\work\Tomcat\localhost\demo无效,即这个目录不存在,导致文件上传失败

造成这种问题的原因:springboot启动项目时会创建一个/tmp/tomcat.7*/work/Tomcat/localhost/xxx的临时目录作为文件上传的临时目录,但是该目录会在10天之后被系统自动清理掉。当该目录被系统清理后,上传文件便会出现该问题。

解决办法

  1. 重启服务
    可临时避免出现该问题,一段时间后该问题还会暴露

  2. 在tmp目录下创建这个目录
    可临时避免出现该问题,一段时间后该问题还会暴露

  3. 增加服务配置,自定义baseDir:
    在配置文件application.properties中设置:

	# springboot项目启动后,指定系统的创建目录
	server.tomcat.basedir = D:/temp

在tmp目录下创建的临时目录不是固定的值

上面的异常信息中,临时目录是 D:\Users\name\AppData\Local\Temp\tomcat.7906663526079040174.8080\work\Tomcat\localhost\demo
项目每次启动,生成的临时目录不同,tomcat.7906663526079040174.8080这个值是变化的。

linux定期清理机制

参考:linux清理tmp机制

如何查找springboot的临时目录

windows系统: 默认生成的临时文件在C:\Users\姓名\AppData\Local\Temp,在此Temp文件夹下有个文件夹是tomcat.173707421065305762.8080,
这个tomcat.173707421065305762.8080就是每次启动springboot项目时默认生成的文件

当使用idea时,也可以通过命令查看,如:
在这里插入图片描述

springboot项目启动后,系统默认会在/tmp目录下自动创建如下三个目录

  • hsperfdata_root
  • tomcat.**********.8080(结尾是项目的端口)
  • tomcat-docbase.*********.8080
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值