关于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 。

完成,留个记录。

相关推荐
Flittly3 分钟前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
众少成多积小致巨29 分钟前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
东坡白菜39 分钟前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端
SimonKing7 小时前
艹,维护AI写的代码,我心态崩了......
java·后端·程序员
用户298698530147 小时前
Java Word 文档样式进阶:段落与文本背景色设置完全指南
java·后端
小bo波1 天前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
用户3521802454751 天前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程
nanxun8862 天前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103512 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师2 天前
Maven dependency:tree 的 8 个高级用法
java·后端