关于SpringBoot在MultipartFile上java.nio.file.NoSuchFileException: /tmp/undertow

SpringBoot在使用MultipartFile上报错java.nio.file.NoSuchFileException: /tmp/undertow

先描述问题

通过Controller接收文件参数,service层进行处理。结果,万万没想到,在service中报了一个错,就找不到文件。

java 复制代码
java.nio.file.NoSuchFileException: /tmp/undertow.9606.4021149120358029507

看到这个异常NoSuchFileException后就一脸懵逼,我明明测试通过的,怎么部署上服务器就不行了!!!

怀疑临时路径问题,但查看配置的临时路径都是OK的,几经波折测试分析发现可能是异步处理问题。

Controller中接收MultipartFile file :

service中异步方法,业务使用file对象会报NoSuchFileExceptio:

java 复制代码
java.nio.file.NoSuchFileException: /tmp/undertow.9606.4021149120358029507

原因:

因为使用的是异步方法,这样就会有一个主线程和一个异步线程。在上传文件后会形成MultipartFile类型的实例,同时生成临时文件,此时是在主线程中。MultipartFile的实例交给异步线程处理后,该临时文件会被springboot(spring)销毁,在异步线程中去getInputStream就会出现上面的异常。

而在下面的写法是将文件流作为了入参,就不会产生找不到文件的情况。

处理:service不要直接用MultipartFile,而使用InputStream 参数来接收。

Controller中,转InputStream 。

service中,接收InputStream 。

完成,留个记录。

相关推荐
摇滚侠15 小时前
浏览器调试工具 检查元素 谷歌模拟器 控制台 断点调试
java·html
心之伊始15 小时前
Spring Boot 接入 MCP 实战:用 Spring AI 调用本地工具的最小闭环
java·spring boot·agent·spring ai·mcp
Refrain_zc15 小时前
无触摸屏场景下的蓝牙交互:Android 纯按键蓝牙扫描配对与 A2DP/Headset 连接
java·蓝牙
计算机安禾15 小时前
【算法设计与分析】第29篇:启发式与元启发式搜索方法综述
java·数据库·算法
DIY源码阁15 小时前
JavaSwing学生选课系统 - MySQL版
java·数据库·mysql·eclipse
西凉的悲伤15 小时前
Spring Boot 、Spring Cloud 微服务架构认证授权方案
spring boot·spring cloud·微服务·架构·认证授权
砍材农夫15 小时前
物联网实战:Spring Boot + Netty 搭建 MQTT | MQTT 设备模拟器
java·spring boot·后端·物联网·struts·spring·netty
城管不管15 小时前
Agent——001
android·java·数据库·llm·prompt
AC赳赳老秦15 小时前
OpenClaw批量任务队列优化:解决任务堆积、执行缓慢、优先级混乱问题
java·大数据·数据库·c++·自动化·php·openclaw