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=手动指定一个临时目录属性,注意:目录需要手动创建

posted on 2018-11-07 18:12  代码ok  阅读(2582)  评论(0编辑  收藏  举报