错误记录:springboot+async异步导入excel报错

news/2024/11/17 22:41:00/

一个简单的上传excel操作,只不过是异步解析,却一直报错:

/tmp/tomcat.7249967840843892717.80/work/Tomcat/localhost/ROOT/upload_acc8f0ff_e428_4675_8228_7d22d855d356_00000008.tmp (No such file or directory)

检查后发现写法并没有错误,该有的注解一个不少,但是上传到服务器就是找不到文件,在file.getInputStream()时报错

最后发现是异步导致的

  1. 后台用MultipartFile接收到前端传来的文件后,会在本地生成一个临时文件,以.tmp结尾;
  2. MultipartFile对应的临时文件的生命周期是一个请求会话,会话结束,MultipartFile的临时文件会被自动清理;
  3. 所以获取文件流不能在异步方法里,此时文件已经被清理

解决方法:在主流程中将MultipartFile转为一个临时存在的文件进行异步操作,操作完成后删除该文件。

service

	@Overridepublic void importFile(MultipartFile file) {// MultipartFile对应的临时文件的生命周期是一个请求会话,会话结束,MultipartFile的临时文件会被自动清理;// 异步导入需生成一个一直存在的临时文件,最后删除try {File excelFile = FileUtils.multipartFileToFile(file);lssVipInfoServiceAsync.analyzeFile(excelFile, lssVipImportFileBo.getId(), UserInfoContext.getUserInfo().getUsername());} catch (Exception e) {throw new RuntimeException("系统解析Excel文件出错");}}

http://www.ppmy.cn/news/1041550.html

相关文章

nodejs 之 express 实现下载网络图片并上传到七牛云对象存储oss空间

为方便阅读,本文将所有逻辑放在一个函数里,可根据自己的情况拆分。 安装依赖 在项目根目录下运行以下命令安装依赖 npm install express qiniu axios业务逻辑 在项目根目录下创建一个名为 app.js 的文件,并添加以下内容 const express re…

《Go 语言第一课》课程学习笔记(四)

构建模式:Go Module 的 6 类常规操作 为当前 module 添加一个依赖 我们如何为一个 Go Module 添加一个新的依赖包呢? 如果我们要为项目增加一个新依赖:github.com/google/uuid,我们首先会更新源码:package mainimpor…

KVM虚拟机管理

1、创建、删除快照 关机 init0 列出快照 删除快照 2、虚拟机迁移 报错 解决:关闭防火墙,关闭selinux 其他解决办法:kvm热迁移使用nfs共享存储报错_莉法的博客-CSDN博客

ReentrantLock源码解析

定义 可重入锁,对于同一个线程可以重复获得此锁。分为FailLock和NonfairLock。 加锁就是将exclusiveOwnerThread设置为当前线程,且将status加一,解锁就status-1,且exclusiveOwnerThread设置为null。 公平锁:根据先来后…

Python 网页解析初级篇:BeautifulSoup库的入门使用

在Python的网络爬虫中,网页解析是一项重要的技术。而在众多的网页解析库中,BeautifulSoup库凭借其简单易用而广受欢迎。在本篇文章中,我们将学习BeautifulSoup库的基本用法。 一、BeautifulSoup的安装与基本使用 首先,我们需要使…

对象存储服务-MinIO基本集成

是什么 MinIO 是一个高性能的分布式对象存储服务,适合存储非结构化数据,如图片,音频,视频,日志等。对象文件最大可以达到5TB。 安装启动 mkdir -p /usr/local/minio cd /usr/local/minio# 下载安装包 wget https:/…

vue使用jsplumb 流程图

安装jsPlumb库&#xff1a;在Vue项目中使用npm或yarn安装jsPlumb库。 npm install jsplumb 创建一个Vue组件&#xff1a;创建一个Vue组件来容纳jsPlumb的功能和呈现。 <template><div style"margin: 20px"><div style"margin: 20px">&l…

js 闭包和 垃圾回收机制

js 闭包和 垃圾回收机制 闭包里面的变量 是局部变量 但是 由于一直使用&#xff0c;引用&#xff0c;没有被回收 所以相当于 全局变量