EasyExcel上传校验文件错误信息放到文件里以Base64 返回给前端
产品需求:
前端上传个csv 或 excel 文件,文件共4列,验证文件大小,类型,文件名长度,文件内容,如果某行某个单元格数据验证不通过,就把错误信息放到这行第五列,然后把带有错误信息的文件,返回给前端。
@ApiOperation(value = "上传新增")@PostMapping(path = "uploadFile")public ResultMsg<?> uploadExcelFile(@RequestParam("file") MultipartFile file) throws IOException {if (file.getOriginalFilename().length() > 256) {return ResultMsg.failed("文件名超长");}if (file.getSize() > 3 * 1024 * 1024) {return ResultMsg.failed("文件太大");}String fileType = Optional.ofNullable(file.getOriginalFilename()).map(name -> name.substring(name.lastIndexOf("."))).orElse(null);if (!".xls".equalsIgnoreCase(fileType) && !".xlsx".equalsIgnoreCase(fileType) && !".csv".equalsIgnoreCase(fileType)) {return ResultMsg.failed("仅支持 [xls xlsx csv] 格式");}StyleOfWritingExcelDTO dto = null;try {dto = this.validateAndReadExcel(file.getInputStream());} catch (IOException e) {throw new RuntimeException(e);}if (dto.getHasError()) {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();EasyExcel.write(byteArrayOutputStream, StyleOfWritingExcelModel.class)
// .excelType(ExcelTypeEnum.XLSX).sheet("sheet1").doWrite(dto.getStyleOfWritingExcelModelList());String base64Str = Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray());Map<Object, Object> base64Map = new HashMap<>();base64Map.put("errStr", "文件内容不合格");base64Map.put("fileData", base64Str);return ResultMsg.failed(4001, "文件内容不合格", base64Map);}if (dto.getStyleOfWritingExcelModelList().isEmpty()) return ResultMsg.failed("文件内容为空");saveData(dto.getStyleOfWritingExcelModelList());return ResultMsg.success();}private StyleOfWritingExcelDTO validateAndReadExcel(InputStream inputStream) {StyleOfWritingExcelDTO result = new StyleOfWritingExcelDTO();List<StyleOfWritingExcelModel> dataList = new ArrayList<>();EasyExcel.read(inputStream, StyleOfWritingExcelModel.class, new AnalysisEventListener<StyleOfWritingExcelModel>() {@Overridepublic void invoke(StyleOfWritingExcelModel styleOfWritingExcelModel, AnalysisContext analysisContext) {StringBuilder errorInfo = new StringBuilder();CategoryEntity firstCategory = null;if (StringUtils.isBlank(styleOfWritingExcelModel.getFirstCategoryName())) {errorInfo.append("品类不能为空;");} else if (styleOfWritingExcelModel.getFirstCategoryName().length() > 50) {errorInfo.append(String.format("品类名长度超限,限制最大[%d]字符;", 50));} else {firstCategory = this.getCategoryCode(styleOfWritingExcelModel.getFirstCategoryName());if (ObjectUtils.isEmpty(firstCategory))errorInfo.append(String.format("品类在库里未找到;"));elsestyleOfWritingExcelModel.setFirstCategory(firstCategory.getCode());}CategoryEntity secondCategory = null;if (StringUtils.isBlank(styleOfWritingExcelModel.getSecondCategoryName())) {errorInfo.append("二级品类不能为空; ");} else if (styleOfWritingExcelModel.getSecondCategoryName().length() > 50) {errorInfo.append(String.format("二级品类名长度超限,限制最大[%d]字符", 50));} else {secondCategory = this.getCategoryCode(styleOfWritingExcelModel.getSecondCategoryName());if (ObjectUtils.isEmpty(secondCategory))errorInfo.append(String.format("二级品类在库里未找到;"));elsestyleOfWritingExcelModel.setSecondCategory(secondCategory.getCode());}if (ObjectUtils.isNotEmpty(firstCategory) && ObjectUtils.isNotEmpty(secondCategory)) {if (!firstCategory.getCode().equals(secondCategory.getParentCode())) {errorInfo.append(String.format("二级品类 和 品类 不匹配"));}}if (StringUtils.isBlank(styleOfWritingExcelModel.getContent())) {errorInfo.append("内容不能为空; ");} else if (styleOfWritingExcelModel.getContent().length() > 3000) {errorInfo.append(String.format("内容长度超限,限制最大[%d]字符", 3000));}styleOfWritingExcelModel.setErrorInfo(errorInfo.toString());dataList.add(styleOfWritingExcelModel);if (!result.getHasError() && StringUtils.isNotBlank(errorInfo.toString())) {result.setHasError(true);}}private CategoryEntity getCategoryCode(String categoryName) {List<CategoryEntity> categoryList = categoryService.list(new QueryWrapper<CategoryEntity>().lambda().eq(CategoryEntity::getName, categoryName));return categoryList.stream().findFirst().orElse(null);}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 解析完成后的操作}}).sheet().doRead();result.setStyleOfWritingExcelModelList(dataList);return result;}返回:{"code": 4001,"message": "文件内容不合格","data": {"fileData": "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","errStr": "文件内容不合格"},"timestamp": 63417752000000
}
相关文章:

EasyExcel上传校验文件错误信息放到文件里以Base64 返回给前端
产品需求: 前端上传个csv 或 excel 文件,文件共4列,验证文件大小,类型,文件名长度,文件内容,如果某行某个单元格数据验证不通过,就把错误信息放到这行第五列,然后把带有…...
单片机软件定时器V4.0
单片机软件定时器V4.0 用于单片机定时执行任务等,比如LED GPIO等定时控制,内置前后台工作模式 头文件有使用例子 #ifndef __SORFTIME_APP_H #define __SORFTIME_APP_H#ifdef __cplusplus extern "C" { #endif#include <stdint.h>// #…...

超完整Docker学习记录,Docker常用命令详解
前言 关于国内拉取不到docker镜像的问题,可以利用Github Action将需要的镜像转存到阿里云私有仓库,然后再通过阿里云私有仓库去拉取就可以了。 参考项目地址:使用Github Action将国外的Docker镜像转存到阿里云私有仓库 一、Docker简介 Do…...
C++ 入门第26天:文件与流操作基础
往期回顾: C 入门第23天:Lambda 表达式与标准库算法入门-CSDN博客 C 入门第24天:C11 多线程基础-CSDN博客 C 入门第25天:线程池(Thread Pool)基础-CSDN博客 C 入门第26天:文件与流操作基础 前言…...
使用python将多个Excel表合并成一个表
import pandas as pd# 定义要合并的Excel文件路径和名称 file_paths [file1.xlsx, file2.xlsx, file3.xlsx, file4.xlsx, file5.xlsx]# 创建一个空的DataFrame来存储合并后的数据 merged_data pd.DataFrame()# 循环遍历每个Excel文件,并读取其中的数据 for file_p…...
halcon三维点云数据处理(七)find_shape_model_3d_recompute_score
目录 一、find_shape_model_3d_recompute_score例程代码二、set_object_model_3d_attrib_mod函数三、prepare_object_model_3d 函数四、create_cube_shape_model_3d函数五、获得CamPose六、project_cube_image函数七、find_shape_model_3d函数八、project_shape_model_3d函数 一…...

vue js实现时钟以及刻度效果
2025.01.08今天我学习如何用js实现时钟样式,效果如下: 一、html代码如下: <template><!--圆圈--><div class"notice_border"><div class"notice_position notice_name_class" v-for"item in …...

unity学习15:预制体prefab
目录 1 创建多个gameobject 2 创建prefab 2.1 创建prefab (类) 2.2 prefab 是一个文件 2.3 prefab可以导出 3 创建prefab variant (子类) 3.1 除了创建多个独立的prefab, 还可以创建 prefab variant 3.2 他…...

基于Thinkphp6+uniapp的陪玩陪聊软件开发方案分析
使用uni-app框架进行前端开发。uni-app是一个使用Vue.js开发所有前端应用的框架,支持一次编写,多端发布,包括APP、小程序、H5等。 使用Thinkphp6框架进行后端开发。Thinkphp6是一个轻量级、高性能、面向对象的PHP开发框架,具有易…...
MySQL - 子查询和相关子查询详解
在SQL中,子查询(Subquery)和相关子查询(Correlated Subquery)是非常强大且灵活的工具,可以用于执行复杂的数据检索和操作。它们允许我们在一个查询中嵌套另一个查询,从而实现更复杂的逻辑和条件…...
Android 系统签名 keytool-importkeypair
要在 Android 项目中使用系统签名并将 APK 打包时与项目一起打包,可以按照以下步骤操作: 步骤 1:准备系统签名文件 从 Android 系统源码中获取系统签名文件,通常位于 build/target/product/security 目录下,包括 pla…...

安卓漏洞学习(十八):Android加固基本原理
APP加固技术发展历程 APK加固整体思路 加固整体思路:先解压apk文件,取出dex文件,对dex文件进行加密,然后组合壳中的dex文件(Android类加载机制),结合之前的apk资源(解压apk除dex以外…...

Docker 使用Dockerfile创建镜像
创建并且生成镜像 在当前目录下创建一个名为Dockerfile文件 vi Dockerfile填入下面配置 # 使用 CentOS 作为基础镜像 FROM centos:7# 设置工作目录 WORKDIR /app# 复制项目文件到容器中 COPY bin/ /app/bin/ COPY config/ /app/config/ COPY lib/ /app/lib/ COPY plugin/ /a…...
【Python运维】利用Python实现高效的持续集成与部署(CI/CD)流程
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 持续集成与部署(CI/CD)是现代软件开发中不可或缺的实践,通过自动化测试、构建和部署流程,显著提高了开发效率与运维质量。本文详细介绍…...

成功!QT 5.15.2编译mysql驱动
首选要说明,5.15与6.7编译驱动是完全不同的。搞错了永远编译不出来。 参考 主要是参考安装QT,安装mysql等。 编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MSVC版)_mingw编译qt6.7-CSDN博客 复制mysql的include和lib到一个方便的目…...

安卓NDK视觉开发——手机拍照文档边缘检测实现方法与库封装
一、项目创建 创建NDK项目有两种方式,一种从新创建整个项目,一个在创建好的项目添加NDK接口。 1.创建NDK项目 创建 一个Native C项目: 选择包名、API版本与算法交互的语言: 选择C版本: 创建完之后,可…...

第二届 Sui 游戏峰会将于 3 月 18 日在旧金山举行
3 月中旬,Sui 基金会和 Mysten Labs 将共同举办第二届 Sui 游戏峰会(Sui Gaming Summit),这是一个专注于 Sui 游戏平台的 GDC 周边活动。此次峰会将与旧金山的年度游戏开发者大会(GDC,Game Developers Conf…...

自动驾驶相关知识学习笔记
一、概要 因为想知道SIL、HIL是什么仿真工具,故而浏览了自动驾驶相关的知识。 资料来源《自动驾驶——人工智能理论与实践》胡波 林青 陈强 著;出版时间:2023年3月 二、图像的分类、分割与检测任务区别 如图所示,这些更高阶的…...

uniapp - 基于uniapp+vue3实现自定义增强版table表格组件体验「兼容H5+小程序+App端」
本文提供增强版table表格组件体验,打造跨端表格的新标杆. uv3-table:一款基于uniappvue3跨端自定义手机端增强版表格组件。支持固定表头/列、边框、斑马纹、单选/多选,自定义表头/表体插槽、左右固定列阴影高亮显示。支持编译兼容H5小程序端App端。 提供…...

新时期下k8s 网络插件calico 安装
1、k8s master节点初始化完毕以后一直处于notreadey状态,一直怀疑是安装有问题或者是初始化有问题(当然,如果真有问题要先解决这些问题),经过不断探索才发现是网络插件没有安装导致的,根据建议安装calico插…...

零基础在实践中学习网络安全-皮卡丘靶场(第十期-Over Permission 模块)
经过这么长时间的学习,我相信大家已经有了很大的信心,有可能会有看不起的意思,因为皮卡丘是基础靶场,但是俗话说"基础不牢,地动山摇",所以还请大家静下心来进行学习 来翻译一下是什么意思&#…...
AI不会杀死创作,但会杀死平庸
作为一个敲了8年Java代码的普通本科程序员,日常主要泡在会议后台管理系统的开发里。从2023年底被朋友拽着试了第一把AI工具到现在,电脑手机上的AI软件比外卖App还多——写代码的Copilot、画时序图的工具、聊天的ChatGPT、Deepseek,基本市面上…...
ant-design4.xx实现数字输入框; 某些输入法数字需要连续输入两次才显示
目录 一、问题 二、解决方法 三、总结 一、问题 1.代码里有一个基于ant封装的公共组件数字输入框,测试突然说 无效了,输入其他字符也会显示;改了只有又发现某些 输入法 需要连续输入两次 才能显示出来。 二、解决方法 1.就离谱࿰…...
Linux安装jdk、tomcat
1、安装jdk sudo yum install -y java-1.8.0-openjdk-devel碰到的问题:/var/run/yum.pid 已被锁定 Another app is currently holding the yum lock; waiting for it to exit… https://blog.csdn.net/u013669912/article/details/131259156 参考&#…...
【C/C++】algorithm清单以及适用场景
文章目录 algorithm清单以及适用场景1 算法介绍1.1 分类1.2 非修改序列算法1.3 修改序列算法1.4 排序与堆算法1.5 集合操作算法(要求有序)1.5 查找算法1.6 二分查找算法(有序区间)1.7 去重与分区算法1.8 数值算法 <numeric>…...

ASP.NET Core使用Quartz部署到IIS资源自动被回收解决方案
iis自动回收的原因 回收机制默认配置,间隔时间是1740分钟,意思是:默认情况下每1740分钟(29小时)回收一次,定期检查应用程序池中的工作进程,并终止那些已经存在很长时间或已经使用了太多资源的工作进程 进程模型默认配…...

USART 串口通信全解析:原理、结构与代码实战
文章目录 USARTUSART简介USART框图USART基本结构数据帧起始位侦测数据采样波特率发生器串口发送数据 主要代码串口接收数据与发送数据主要代码 USART USART简介 一、USART 的全称与基本定义 英文全称 USART:Universal Synchronous Asynchronous Receiver Transmi…...
Python训练营打卡Day46(2025.6.6)
知识点回顾: 不同CNN层的特征图:不同通道的特征图什么是注意力:注意力家族,类似于动物园,都是不同的模块,好不好试了才知道。通道注意力:模型的定义和插入的位置通道注意力后的特征图和热力图 i…...
结构体和指针1
#include <iostream> using namespace std; #include <string> struct Student{ int age; string name; double score; }; int main() { //静态分配 Student s1 {18,"小明",88.5}; //cout << s1.name<<"的成绩为…...

短视频矩阵系统源码新发布技术方案有那几种?
短视频矩阵运营在平台政策频繁更迭的浪潮中,已成为内容分发的核心战场。行业领先者如筷子科技、云罗抖去推、超级编导等平台,其稳定高效的代发能力背后,离不开前沿技术方案的强力支撑。本文将深入剖析当前主流的六大短视频矩阵系统代发解决方…...