使用spring boot 上传,刚开始一切正常,但过了一段时间上传文件的时候出现错误。
org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. /tmp/tomcat.30012.2153427821512963750/work/Tomcat/localhost/ROOT/upload_88867231_f47b_4776_8ad3_f3016c23ccea_00000212.tmp (No such file or directory)
究竟是什么原因呢?报错信息已经说了,就是找不到路径,这个路径是tomcat临时文件的目录。
那为什么一开始又一切正常呢?而过了一段时间后就报错了?
其实这跟临时文件夹存活时间有关。如果我们不指定tomcat运行根目录,那么在sping boot 项目启动时,系统会自动创建一个项目运行临时目录,一般在\AppData\Local\Temp\ 目录下。这个临时文件有自己的清理策略,会在一段时间后自动清理。所以说为什么刚开始运行一切正常,而过了一段时间之后就报找不到路径了。
解决方法:
#spring boot 项目中,application.properties增加如下配置指定tomcat的基目录,否则spring boot内嵌的tomcat容器会创建一个临时目录,但是此目录有一个定期清除策略,会影响web容器资源的使用,所以指定在项目根目录创建目录
server.tomcat.basedir=./deployer/tomcat