一、背景描述
CMS后台管理系统(springboot项目)在本地测试上传视频文件时,控制台报错信息如下:
org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608.8090/work/Tomcat/localhost/ROOT] is not valid
二、异常分析
从上述报错信息来看,翻译过来内容是指:临时上传位置无效。这个临时位置是哪里来的,为什么会有临时位置这一说法。
1、对于HTTP POST请求来说,它需要一个临时目录来存储POST数据;
2、因为该目录是放到temp文件夹下的一个临时目录,对于一些操作系统来讲,会经常删除临时内容的,所以这个内容就不存在了,导致上述报错信息说临时上传位置无效的结果。(我电脑上装360安全卫士了,会经常提示我,电脑垃圾太多,让我清理,所以会经常清理电脑垃圾,包括缓存和临时文件都会清理的)
三、解决方案
以下是汇总的几种解决办法,根据个人喜欢可用不同的方法。
方案一:重启本项目
我是懒省事儿,重启本项目,然后就解决这个问题了。
方案二:修改配置文件(application.properties或者.yml配置文件)
修改完配置之后,重启项目
方式一,适用于一些版本旧的项目,目前我知道的是spring boot 2.0.1以下版本
spring.http.multipart.location=/data/upload_tmp
方式二:适用于一些新版本的项目,通常是spring boot 2.0.1以上的版本
spring.servlet.multipart.location=/data/upload_tmp
方案三:添加项目启动参数
-java.tmp.dir=/path/to/application/temp/
重启项目
完结!