spring boot 文件上传 找不到临时文件路径

文章讲述了在SpringBoot应用中,由于默认临时文件路径可能被系统清理,导致上传文件时出错。提供了两种方法来指定临时文件目录,包括在配置类中使用`@Value`注解和MultipartConfigFactory。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加启动配置类:在spring boot 中上传文件如果不指定临时文件路径,服务运行时间长了,操作系统会对默认的临时目录进行清理,导致再次上传文件时报错,找不到临时目录。
异常信息:

异常信息: org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1978174608501890996.8083/work/Tomcat/localhost/pmap] is not vali

以下是指定临时文件目录的方式:

  1. 第一种方式(spring boot 有配置入口)
    spring:
        servlet:
            multipart:
                location: /home/uploadPath/temp

  2. 第二种方式在配置文件中添加:
location:
  tempDir: /home/uploadPath/temp

添加启动配置类:

package com.sgcc.uap.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.MultipartConfigElement;
import java.io.File;

/**
 * @ClassName MultipartConfig
 * @Description 指定临时文件目录
 * @Date 2022/10/25 9:14
 */
@Configuration
public class MultipartConfig {

    @Value("${location.tempDir}")
    private String tempDir;

    @Bean
    MultipartConfigElement mutipartConfigElement(){
        MultipartConfigFactory factory = new MultipartConfigFactory();
        File tmpDirFile = new File(tempDir);
        // 判断文件夹是否存在
        if (!tmpDirFile.exists()) {
            tmpDirFile.mkdirs();
        }
        factory.setLocation(tempDir);
        return factory.createMultipartConfig();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值