解决springboot上传文件报错:临时文件不存在

springboot上传文件时采用MultipartFile 类型上传**,经过测试SpringFramework5. 版本会自动创建改临时目录,**不会出现如下异常:

当centos 系统自动清理掉临时文件夹后,会引起如下异常:

NestedServletExceprion:Request procceing failed; nested exception is
org.springframework.web.multipart.MultipartExceprion:Failed to parse
multipart servelet request; nested exception is io.IOException:upload
location [/tmp/tomcat.************.8080/work/Tomcat/localhost/ROOT] is
not valid

二 、 使用低版本时可能如果出现上述问题,可参考以下方式解决

项目启动后会在 /tmp 文件夹下创建三个临时目录用以存储临时文件:**
1, hsperfdata_root,

2,tomcat.************.8080,(结尾是项目的端口)

3,tomcat-docbase.*********.8080。

Multipart(form-data)的方式处理请求时,默认就是在第二个目录下创建临时文件的。
问题起因:
centos 会对’/tmp’下文件自动清理
**

解决办法:
改变临时文件的存储路径 两种方法:

1.采用配置类
@Configuration
public class MultipartConfig {

    /**
     * 文件上传临时路径
     */
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        String location = "自定义临时文件路径";
        File tmpFile = new File(location);
        if (!tmpFile.exists()) {
            tmpFile.mkdirs();
        }
        factory.setLocation(location);
        return factory.createMultipartConfig();
    }
}

2.可采用配置文件关于multipart的配置项来指定临时文件路径

> #指定multipartFile临时文件存放路径,但是内置的tomcat创建的临时文件夹路径还是不变的 spring.servlet.multipart.location=临时文件路径
> #指定springboot启动时内置tomcat创建的临时文件夹的路径
> #server.tomcat.basedir=/data/ops/app/cms/cache

当采用配置项后,multipartFile的临时文件如下:
在这里插入图片描述

参考博文:https://www.cnblogs.com/siran/p/14109902.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值