当前位置: 首页 > news >正文

Vue3使用ElementPlus中的el-upload手动上传并调用上传接口

前端代码

	   <div class="upload-div"><el-uploadv-model:file-list="form.fileImageList"ref="uploadRef"capture="false"action="#"accept="image/*"list-type="picture-card":on-change="handleChange":auto-upload="false":on-preview="handlePictureCardPreview":on-remove="handleRemove":multiple="true"><el-icon><Plus/></el-icon></el-upload><el-dialog v-model="dialogVisible" class="image-dialog"><img style="width: 100%;height: 100%" w-full :src="dialogImageUrl" alt="Preview Image"/></el-dialog></div>
const fileBinaryList = ref([]);
const dialogImageUrl = ref('');
const dialogVisible = ref(false);
const buttonLoading = ref(false);const handleChange = (file, files) => {// file是当前上传的文件,files是当前所有的文件,fileBinaryList.value = files;
};const handlePictureCardPreview = (file) => {dialogImageUrl.value = file.url;dialogVisible.value = true
}const handleRemove = (file) => {delImageByName(file.name).then(response => {proxy.$modal.msgSuccess("删除成功");}).finally(() => {});
}function submitForm() {let formData = new FormData();  //FormData中的参数formData.append('id', form.value.id);fileBinaryList.value.forEach((item) => {formData.append('files', item.raw);});uploadBinaryImage(formData);proxy.$modal.msgSuccess("修改成功");
}

前端定义接口

export function uploadBinaryImage(data) {return request({url: '/update/update/uploadBinaryImage',method: 'post',data: data,headers: {'Content-Type': 'multipart/form-data'}})
}

后端代码

实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.multipart.MultipartFile;/*** @author: rattcs* @date: 2023/1/13*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UploadDto {private String id;}

定义接口

	/*** 上传二进制文件图片集合*/@SaCheckPermission("update:update:uploadBinaryImage")@Log(title = "上传二进制文件图片", businessType = BusinessType.INSERT)@PostMapping("/uploadBinaryImage")public void uploadBinaryImage(@RequestBody @RequestParam("files") MultipartFile[] files, UploadDto bo) {iInvestigationRiverLakeDischargeOutletsService.uploadBinaryImage(files,bo);}

上传文件并插入数据库数据

	@Value("${upload.dir}")private String UPLOAD_DIR;@Overridepublic void uploadBinaryImage(MultipartFile[] files,UploadDto uploadDto) {String id = uploadDto.getId();for (MultipartFile file : files) {try {// 检查上传目录是否存在,不存在则创建File uploadDir = new File(UPLOAD_DIR);if (!uploadDir.exists()) {uploadDir.mkdirs();}// 获取文件名String fileName = file.getOriginalFilename();String suffix = file.getOriginalFilename().split("\\.")[1];// 设置上传文件的保存路径String fileUploadName = java.util.UUID.randomUUID() + "." + suffix;Path filePath = uploadDir.toPath().resolve(fileUploadName);// 将文件复制到指定路径Files.copy(file.getInputStream(), filePath, StandardCopyOption.REPLACE_EXISTING);investigationImageMapper.insert(new InvestigationImage() {{setInvestigationId(Long.valueOf(id));setImageUrl(fileUploadName);setImageName(fileUploadName);setCreateTime(new Date());}});} catch (IOException e) {e.printStackTrace();}}}

相关文章:

Vue3使用ElementPlus中的el-upload手动上传并调用上传接口

前端代码 <div class"upload-div"><el-uploadv-model:file-list"form.fileImageList"ref"uploadRef"capture"false"action"#"accept"image/*"list-type"picture-card":on-change"handleC…...

【Github3k+⭐️】《CogAgent: A Visual Language Model for GUI Agents》译读笔记

CogAgent: A Visual Language Model for GUI Agents 摘要 人们通过图形用户界面&#xff08;Graphical User Interfaces, GUIs&#xff09;在数字设备上花费大量时间&#xff0c;例如&#xff0c;计算机或智能手机屏幕。ChatGPT 等大型语言模型&#xff08;Large Language Mo…...

FF的异步清零端口需要时钟吗?--不需要

...

【conda】pip安装报错,网络延时问题解决记录(亲测有效)

【conda】pip安装报错&#xff0c;网络延时问题解决记录 1. pip install 报错如下所示2. 解决方案&#xff1a; 1. pip install 报错如下所示 pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out.…...

Spring Boot整理-Spring Boot的优势

Spring Boot 提供了多个显著的优势,特别是对于快速开发和简化 Spring 应用的配置和部署。这些优势包括: 简化配置:Spring Boot 的“约定优于配置”的原则意味着许多 Spring 应用的常见配置项被自动设置,这减少了开发人员需要编写和维护的配置代码量。快速启动和部署:Sprin…...

C++标准学习--decltype

decltype / auto 是具有类型推导功能的 类型 描述/占位 符 decltype: 获取对象或表达式的类型auto: 类型自动推导 decltype 可以获取变量类型&#xff0c; &#xff08;并不同于python的type&#xff0c;但python能打印出type获取的名称&#xff0c; C通过typeid实现&#xff…...

Linux之静态库和动态库

目录 一、前言 二、对于库的理解 三、静态库 四、动态库 五、动静态库的加载 一、前言 在之前&#xff0c;我们讲了静态库和动态库&#xff0c;详情请跳转&#xff1a;静态库和动态库 下面我们将从工程师的角度&#xff0c;去了解静态库和动态库的形成过程&#xff0c;以…...

erlang/OTP 平台(学习笔记)(三)

分布式 Erlang 借助于语言属性和基于复制的进程通信&#xff0c;Erlang程序天然就可以分布到多台计算机上。要问为什么&#xff0c;且让我们来看两个用Java或C这类语言写成的进程&#xff0c;它们运作良好并以共享内存为通信手段。假设你已经搞定了锁的问题&#xff0c;一切精…...

Spring整理-Spring框架中用了哪些设计模式

Spring框架广泛应用了多种设计模式,这些模式提高了框架的灵活性、可扩展性和可维护性。下面是在Spring框架中常见的一些设计模式: 单例模式(Singleton):用于在应用的整个生命周期内保持一个类的单个实例。在Spring中,Bean默认是单例模式。 工厂模式(Factory Pattern):…...

Poi实现根据word模板导出-图表篇

往期系列传送门&#xff1a; Poi实现根据word模板导出-文本段落篇 &#xff08;需要完整代码的直接看最后位置&#xff01;&#xff01;&#xff01;&#xff09; 前言&#xff1a; 补充Word中图表的知识&#xff1a; 每个图表在word中都有一个内置的Excel&#xff0c;用于…...

windows或mac端口转发

摘要 在内网开发中&#xff0c;由于出于公司安全考虑&#xff0c;部分IP192.168.0.100访问只能针对固定IP192.168.0.200开放&#xff0c;此时我需要通过我的电脑192.168.0.300去访问&#xff0c;由于未对我电脑IP192.168.0.300授权&#xff0c;导致我访问不到&#xff0c;此时…...

Linux工具-搭建文件服务器

当我们使用linux系统作为开发环境时&#xff0c;经常需要在Linux系统之间、Linux和Windows之间传输文件。 对少量文件进行传输时&#xff0c;可以使用scp工具在两台主机之间实现文件传输&#xff1a; rootubuntu:~$ ssh --help unknown option -- - usage: ssh [-46AaCfGgKkMN…...

深入理解@DubboReference与@DubboService【三】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 探索Dubbo的核心&#xff1a;深入理解DubboReference与DubboService【三】 前言DubboService注解基本概念使用示例高级特性 DubboReference注解基本概念使用示例服务调用流程 最佳实践注解的最佳使用方…...

linux主机的免密登录

实现linux主机之间的相互免密登录 在进行远程登录的时&#xff0c;服务器和主机间进行认证阶段分为&#xff1a; 基于口令认证&#xff08;不安全&#xff0c;易被抓包拦截获取&#xff09; 客户机连接服务器时&#xff0c;服务器将自己的公钥返回给客户机 客户机会将服务器的…...

Git常用命令和QA(网摘)

主要内容 常用命令git checkout --orphan 分支与 git checkout -b 分支区别git如何创建一个新的空白分支branchgit开发分支本地分支合并远程分支git remote prune origingit log如何退出&#xff1f;如何退出git log或git commit模式git log如何退出git commit 的退出 git强制p…...

PHP AES 加密示例

PHP中实现AES加密的一个基本示例涉及到使用openssl_encrypt函数。这个函数允许你使用不同的加密算法&#xff0c;包括AES。下面是一个简单的示例&#xff0c;展示了如何使用AES加密一个字符串。 首先&#xff0c;你需要确定几个关键的参数&#xff1a; 数据&#xff08;Data&…...

第十九章:特殊工具与技术

第十九章&#xff1a;特殊工具与技术 对于很多程序员来说&#xff0c;他们很少会用到本章的介绍的内容。 一.控制内存分配 我们能够重载new和delete&#xff0c;但其实不是对new和delete的重载&#xff0c;只是对new和delete操作符后面的函数进行重载。 当我们使用一条new表…...

大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解

文章目录 大数据深度学习卷积神经网络CNN&#xff1a;CNN结构、训练与优化一文全解一、引言1.1 背景和重要性1.2 卷积神经网络概述 二、卷积神经网络层介绍2.1 卷积操作卷积核与特征映射卷积核大小多通道卷积 步长与填充步长填充 空洞卷积&#xff08;Dilated Convolution&…...

RabbitMQ(九)死信队列

目录 一、简介1.1 定义1.2 何时进入死信队列&#xff1f;1.3 死信消息的变化1.4 死信队列的应用场景1.5 死信消息的生命周期 二、代码实现2.1 死信队列的配置步骤2.2 配置类2.3 配置文件2.4 生产者2.5 业务消费者2.6 死信消费者2.7 测试结果 三、总结四、补充4.1 启动报错 ineq…...

KEI5许可证没到期,编译却出现Error: C9555E: Failed to check out a license.问题解决

一、编译出现如下报错 二、检查一下许可证 三、许可证在许可日期内&#xff0c;故应该不是许可证的问题 四、检查一下编译器&#xff0c;我用的是这个&#xff0c;这几个编译器的区别其实我不太明白&#xff0c;但我把问题解决是选的这个 五、找到编译器的路径&#xff0c;去复…...

5步构建静音高效的电脑散热系统:FanControl全面指南

5步构建静音高效的电脑散热系统&#xff1a;FanControl全面指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…...

开源压枪系统:基于像素识别技术的后坐力补偿解决方案

开源压枪系统&#xff1a;基于像素识别技术的后坐力补偿解决方案 【免费下载链接】Apex-NoRecoil-2021 Scripts to reduce recoil for Apex Legends. (auto weapon detection, support multiple resolutions) 项目地址: https://gitcode.com/gh_mirrors/ap/Apex-NoRecoil-202…...

Synology Photos CPU驱动人脸识别补丁:解锁旧设备AI相册的终极方案

Synology Photos CPU驱动人脸识别补丁&#xff1a;解锁旧设备AI相册的终极方案 【免费下载链接】Synology_Photos_Face_Patch Synology Photos Facial Recognition Patch 项目地址: https://gitcode.com/gh_mirrors/sy/Synology_Photos_Face_Patch 还在为群晖NAS无法使用…...

如何快速搭建Kafka Docker集群:broker-list.sh工作原理与实用指南

如何快速搭建Kafka Docker集群&#xff1a;broker-list.sh工作原理与实用指南 【免费下载链接】kafka-docker Dockerfile for Apache Kafka 项目地址: https://gitcode.com/gh_mirrors/ka/kafka-docker GitHub 加速计划 / ka / kafka-docker 项目提供了基于 Docker 的 A…...

如何用LuckyLilliaBot在5分钟内构建QQ机器人:OneBot 11协议完全指南

如何用LuckyLilliaBot在5分钟内构建QQ机器人&#xff1a;OneBot 11协议完全指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot 想要快速搭建一个功能强大的QQ机器人吗&#xff1f;LuckyLilliaBot为…...

告别两两配对!用Fast3R Transformer一次搞定1000张图的多视角重建(保姆级原理解读)

Fast3R Transformer&#xff1a;颠覆多视角重建的并行化革命 想象一下&#xff0c;你面前摆着1000张从不同角度拍摄的埃菲尔铁塔照片。传统方法需要将这些照片两两配对&#xff0c;进行数百万次重复计算&#xff0c;而Fast3R只需一次前向传播就能完成所有视角的联合重建——这就…...

从LeetCode到ACM:迷宫最短路径的C++ BFS模板,这么写就对了

从LeetCode到ACM&#xff1a;迷宫最短路径的C BFS模板实战精解 在算法竞赛和面试刷题中&#xff0c;迷宫类问题是最经典的场景之一。无论是LeetCode上的简单矩阵遍历&#xff0c;还是ACM竞赛中复杂的路径搜索&#xff0c;广度优先搜索&#xff08;BFS&#xff09;都是解决这类问…...

UML(Unified Modeling Language,统一建模语言)是一种标准化的可视化建模语言,广泛用于软件系统的需求分析

UML&#xff08;Unified Modeling Language&#xff0c;统一建模语言&#xff09;是一种标准化的可视化建模语言&#xff0c;广泛用于软件系统的需求分析、设计与文档化。你列出的是UML 2.x 中最常用的六种结构与行为图&#xff0c;分别属于两大类&#xff1a; ✅ 结构图&#…...

用NoneBot2给Lagrange机器人加buff:5个提升效率的插件开发技巧

用NoneBot2给Lagrange机器人加buff&#xff1a;5个提升效率的插件开发技巧 在智能对话机器人领域&#xff0c;NoneBot2与Lagrange的组合已经成为QQ生态中高效开发的黄金搭档。但当你已经掌握了基础功能开发后&#xff0c;如何让机器人更智能、更稳定、更能应对复杂场景&#xf…...

3分钟掌握Windows音频路由:让每个程序都有专属音频输出 [特殊字符]

3分钟掌握Windows音频路由&#xff1a;让每个程序都有专属音频输出 &#x1f3a7; 【免费下载链接】audio-router Routes audio from programs to different audio devices. 项目地址: https://gitcode.com/gh_mirrors/au/audio-router 你是否曾经遇到过这样的烦恼&…...