生产中碰到
org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.7017325300825944656.9400/work/Tomcat/localhost/shop-api] is not valid
的问题。并且按照解决方案一中的方法三解决。过了一段时间再次出现问题
org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/home/temp] is not valid
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:123)
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:114)
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:87)
at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:87)
怀疑是没有/home/temp目录的问题,手动创建了临时文件/home/temp解决问题。但是服务器上手动创建文件如果服务迁移很容易遗忘这些特殊的目录,可能会造成麻烦。因此最好不要手动创建目录。
又找到解决方案二设置了配置文件
spring:
servlet:
multipart:
# 临时文件夹放在日志目录里
location: /data/upload_tmp
结果提示
The temporary upload location [/data/upload_tmp] is not valid
还是没有这个目录,因此这个配置文件并不会主动创建目录。
解决方案:
1、配置地址为服务器肯定会存在的路径
2、程序中配置路径前首先检查有没有此路径
疑惑:
第一次解决时并没有显式创建/home/temp,并没有出问题;程序正常过了一段时间这个路径突然没有了,很奇怪。
第二次配置路径后没有显示创建文件夹报错跟第一次不一致