springboot上传文件异步处理,报错文件找不到 java.io.FileNotFoundException

springboot 上传大文件由于同步逐条处理,响应慢,用户体验差。采用上传文件后,交给子线程异步处理,主线程及时响应。

同时上传多文件 ,会偶现报错java.io.FileNotFoundException  /tmp/XXX/tomcat/XXX 。

springboot文件上传,会创建临时目录保存临时文件,处理完后会清除。

采用主线程同步处理文件,会在文件处理后清除,不会报错。采用异步处理文件,当主线程先返回用户响应,临时目录中的文件会被清除。而此时子线程还在继续处理主线程传的文件流,处理时就会找不到文件报错。

查了下网上现有方案:

重新另外指定临时目录路径: 在配置文件中加上 server.tomcat.basedir=/opt/data  

依然报错,问题仍然存在

正确方案:

将上传的文件另外保存在服务器上。

byte[] bytes = IOUtils.toByteArray(file.getInputStream());

将接收到的文件流保存到byte[]里,然后再将byte[]传给异步处理的线程,问题解决。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值