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

完成,留个记录。

相关推荐
SamDeepThinking11 小时前
RocketMQ消息可靠性的三道关卡
java·后端·程序员
Hesionberger11 小时前
LeetCode79:单词搜索DFS回溯详解
java·开发语言·c++·python·算法·leetcode·c#
skywalk816311 小时前
下载安装 Temurin® JDK JDK 21 - LTS 速度很慢,有办法加速吗?
java·开发语言
Mr数据杨11 小时前
【Codex】用PPT文案额外描述优化课件生成细节
java·javascript·django·powerpoint·codex·项目开发
Andya_net12 小时前
AI | CC GUI 集成 IDEA 完整教程
java·人工智能·intellij-idea
MZ_ZXD00112 小时前
springboot音乐播放器系统-计算机毕业设计源码76317
java·c语言·c++·spring boot·python·flask·php
敲敲千反田12 小时前
Spring 相关
java·后端·spring
@小柯555m12 小时前
Java八股刷题
java·开发语言·八股
bzmK1DTbd12 小时前
Java在人工智能:TensorFlow Java API的使用
java·人工智能·tensorflow
小碗羊肉12 小时前
【JavaWeb | 第四篇】分层解耦
java·后端·servlet