Spring boot 上传文件java.io.IOException: java.io.FileNotFoundException 异常

spring boot实现文件上传,刚开始同步实现,没有问题,后来耗时太长,改成异步实现,但是异步实现,在上传过程中发现报错,

类似下面的堆栈:

java.io.IOException:java.io.FileNotFoundException: /var/private/tomcat.273391201583741210.8080/work/Tomcat/localhost/ROOT/tmp/source/IMG_20160129_132623.tmp(No such file or directory)

表面看了,是一个临时文件找不到,我以为目录没有,尝试创建临时文件需要的目录,发现也不行。

后来百度有人说是内存文件最大size 的设置不对,默认设置比较大,如果小于这个值,不会创建临时文件,所以,修改这个参数

setInMemorySize为1,但是还是不行。

其实现在看来,不是这个问题,唯一的变动就是同步改成异步操作。后来google发现终于找到原因了,分享给大家。

原因: 跟临时文件找不到没有关系,原因在于异步操作上传是,请求流已经关闭了,所以异步上传过程中会失败。

方案:在主线程保存全部文件流,在异步线程中进行处理。完美解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值