java开发遇到的一些问题-持续更新...

24 阅读1分钟

Spring boot上传文件,临时目录找不到

  • 报错信息:
    org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. /tmp/tomcat.90955137957753566.8451/work/Tomcat/localhost/api/upload__7288e50d_19ba0a055f1__8000_00000004.tmp (No such file or directory)

  • 报错问题分析:

    1. 磁盘权限问题,程序没有权限在 /tmp 下面创建目录或文件

    2. 磁盘空间已满

    3. 临时目录被清理 (本人遇到),因为服务器会定时清理 /tmp 目录下长时间未访问过的文件夹。

  • 解决方案:

    1. 问题1,无权限:修改临时目录的路径,该方案会和问题3一起解决。

    2. 问题2,磁盘空间已满:清理磁盘空间

    3. 问题3,临时目录被清理:

      • 解决方案一:在项目的配置文件中,修改临时目录的路径
        yaml格式

        server:
            tomcat:
                basedir: /xxx/xxx/xxx   #指定拥有权限的路径
        

        properties格式

        # 指定拥有权限的路径
        server.tomcat.basedir=/xxx/xxx/xxx
        

        创建目录并赋予权限

        mkdir -p /xxx/xxx/xxx
        chmod 755 /xxx/xxx/xxx
        
      • 解决方案二:临时应急:
        如果只是想临时恢复服务,重启 Spring Boot 应用。 重启后,Tomcat 会自动重新创建那个缺失的临时目录,上传功能就会恢复正常