SpringBoot上传文件出错

SpringBoot上传文件出错现象SpringBoot项目,今天做了一个与前端对接富文本的上传图片到服务器,返回一段URL给前端,一直运行着,前端一直请求接口一直上传图片做测试的时候,后台报了一个错误Couldnotparsemultipartservletrequest;nestedexceptionisjava.io.IOException:Thetemporaryuploadlocat…

大家好,又见面了,我是你们的朋友全栈君。

现象

Spring Boot项目,今天做了一个与前端对接富文本的上传图片到服务器,返回一段URL给前端,一直运行着,前端一直请求接口一直上传图片做测试的时候,后台报了一个错误

Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.**.8081/work/Tomcat/localhost/ROOT] is not valid。

当时就把我整蒙了,什么玩意儿,还没遇到过这种问题

后来查阅了一下资料发现

  1. Spring Boot的应用服务在启动的时候,会生成在操作系统的/tmp目录下生成一个Tomcat.*的文件目录,用于”java.io.tmpdir”文件流操作
    TomcatEmbeddedServletContainerFactory

  2. 程序对文件的操作时:会生成临时文件,暂存在临时文件中; 长时间不操作,导致/tmp下面的tomcat临时文件目录被删除,且删除的文件不可恢复,上传文件时获取不到文件目录,报错

解决方案

  1. 重启服务,临时方案:会重新生成tomcat目录,但是生产环境不建议如此操作;
  2. 改变临时文件的存储路径,如下
@Configuration
public class MultipartConfig { 
   

    /** * 文件上传临时路径 */
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setMaxFileSize(10240000);
        factory.setMaxRequestSize(10240000);
        String location = System.getProperty("user.dir") + "/data/tmp";
        File tmpFile = new File(location);
        if (!tmpFile.exists()) {
            tmpFile.mkdirs();
        }
        factory.setLocation(location);
        return factory.createMultipartConfig();
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136326.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 无偏估计(Unbiased Estimator)「建议收藏」

    无偏估计(Unbiased Estimator)「建议收藏」无偏估计是参数的样本估计量的期望值等于参数的真实值。一个简单的例子(https://www.zhihu.com/question/22983179/answer/23470969):比如我要对某个

    2022年8月2日
    4
  • Idea激活码最新教程2023.2.5版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.2.5版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 2 5 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 2 5 成功激活

    2025年5月27日
    0
  • 密码学专题 SSL协议

    密码学专题 SSL协议SSL协议为不同的高层协议(http、FTP)提供安全服务 SSL握手协议、SSL修改密文协议和SSL告警协议的目的是为了管理和SSL相关的密文交换 连接:两台主机之间提供特定类型的数据传输,是点对点的关系;连接是短暂的,每一个连接都会和一个会话相互关联 会话:是指客户和服务器之间的关联,会话是通过握手协议创建的;会话是加密安全参数的一个集合,包含加密算法、临时的加密密钥等信息;会话可以为多个连接所共享,就可以避免为每个连接建立都要进行安全参数的协商带来的昂贵的时间代价。如果服务器和客户端之..

    2022年5月13日
    43
  • SEH学习

    SEH学习以前觉得加技术的QQ群作用只有一个:闲聊,浪费时间现在想找5,6个长期有时间学习逆向的朋友,在一个小群里面,有问题互相讨论(只讨论技术上的问题)为了保持群的活跃,有要求如下群成员要求1懂C语言汇编,基础windows知识2懂得最基本的脱壳激活成功教程知识3乐于助人4群成员之间互相认识,了解各自水平有兴趣加我的QQ315,1028,21(逗号是为了避免

    2025年6月13日
    0
  • LeetCode解题汇总目录

    此篇为学习完《数据结构与算法之美》后,在LeetCode刷题的汇总目录,方便大家查找(Ctrl+Find),一起刷题,一起PK交流!另有解题:《剑指Offer》、《程序员面试金典》、LintCode代码能力测试CAT。如果本文对你有帮助,可以给我点赞加油!通过2021,简单618/636,中等1120/1266,困难283/488

    2022年4月7日
    33
  • 涨姿势——教你如何获取图片上的文字

    涨姿势——教你如何获取图片上的文字

    2021年9月18日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号