springboot 文件上传 java.io.IOException: The temporary upload location [/tmp/xx] is not valid
转自:http://meia.fun/article/1541578061808
首先分析下出现问题的原因:linux 下的 /tmp 目录,是用来存储由各种程序创建的临时文件的地方。一些配置,导致系统每次 重新启动时,都会清空这个目录。
springboot 项目启动时默认会在 /tmp 目录下创建临时上传目录,所以如果 /tmp 目录不清空就不会抛出这个异常,而 /tmp 目录默认清空的条件是系统重启,所以问题的原因应该不是系统重启,因为系统重启 项目也将重启,也就重新创建了临时上传目录。
有些服务器会装了 tmpwatch 命令,可以执行type tmpwatch
命令检查是否安装,安装此命令后会启动一个 cron 定时任务,定时清空 /tmp 目录,可在/etc/cron.daily/tmpwatch
目录下查看任务脚本,所以如果装了 tmpwatch,很可能就是因为 tmpwatch 在某个时间清空了 /tmp 导致的上传失败
推荐的解决方法:
application.properties 配置文件中添加spring.http.multipart.location=手动指定一个临时目录
属性,注意:目录需要手动创建