Vue + View-ui-plus Upload实现手动上传

news2024/9/22 21:14:49

本文实现Vue + Upload组件多文件手动上传支持上传图片(image)、压缩文件(zip/rar)、表格(excel)、pdf

一、dom结构

<Row>
	<Col :span="19"></Col>
	<Col :span="2">
		<div class="ivu-btn-upload btn-white" style="color: #FB773B;" @click="handleDelImg">
							删除
		</div>
	</Col>
	<Col :span="3">
		<div class="ivu-btn-upload btn-orange" @click="handleUploadImg">
			<img src="@/assets/images/icon-img-upload.png" width="30" />
				上传影像
		</div>
	</Col>
</Row>
<div class="image-ul-box">
	<div class="image-upload">
		<Upload
		    ref="upload"
			:show-upload-list="false"
			:default-file-list="list"
			:on-success="handleSuccess"
			accept="image/*,.xls,.xlsx,.pdf,.doc,.docx,.zip,.rar"
			:format="['jpg','jpeg','png', 'xls', 'pdf', 'word','doc', 'docx' ,'xlsx', 'rar', 'zip']"
			:on-format-error="handleFormatError"
			:before-upload="handleBeforeUpload"
			multiple
			action="#"
			style="display: inline-block;width:68px;">
		    <div style="width: 68px;height:58px;line-height: 58px;">
								<!-- <Icon type="ios-add" size="50"></Icon> -->
								<img src="@/assets/images/img-upload.png" width="50" />
								<p style="color: #bdbdbd;font-size: 16px;line-height: 1;">添加文件</p>
		    </div>
		</Upload>
	</div>
	<div class="image-ul-li" v-for="item,index in list" :key="'image'+index">
		<div class="image-ul-li-img">
			<Image :src="item.url" fit="cover" width="100%" height="100%" />
			<div class="image-li-img-check" v-if="item.statusFlag == 0"><Checkbox v-model="item.check" /></div>
			<div class="image-li-status" v-if="item.statusFlag == 0">未上传</div>
		</div>
		<p class="image-ul-li-txt">
			<Ellipsis :text="item.name" :length="10" tooltip />
		</p>
	</div>
</div>

二、js方法

handleUploadImg() {
			let checkList = this.list.filter(item => item.check == true)
			if (checkList.length == 0) {
				this.$Message.error("请勾选需要上传的文件!")
				return
			}

			this.list.forEach(item => {
				if (item.check) {
					let formData = new FormData()
					formData.append("file", item.files)
					formData.append("businessNo", this.proposalNo)
					uploadFile(formData).then(res => {
						if (res.code == "0000") {
							let result = res?.result?.imgUrls
							if (result.length > 0) {
								item.statusFlag = 1
								item.check = false
							}
						} else {
							this.$Message.error(res.message)
						}
					})
				}
			})

		},

		handleSuccess(file) {},

		handleFormatError(file) {
			this.$Message.error({
				background: true,
				content: '文件格式错误,请选择正确的文件重新上传!'
			});
		},

		handleBeforeUpload(file) {
			console.log(file, "11111111")
			let Maxsize = file.size > 30 * 1024 * 1024;
			if (Maxsize) {
				this.$Message.warning({
					content: '文件体积过大,图片大小不能超过30M'
				});
				return false
			}
			let imgTypeArr = ["image/png", "image/jpg", "image/jpeg", "image/gif"]
			let imgType = imgTypeArr.indexOf(file.type) !== -1
			if (imgType) {
				const reader = new FileReader()
				reader.readAsDataURL(file)
				reader.onload = (e) => {
					this.list.push({
						name: file.name,
						check: false,
						statusFlag: 0,
						url: reader.result,
						files: file
					})
				}
			} else {
				this.list.push({
					name: file.name,
					check: false,
					statusFlag: 0,
					url: this.getAssetsImgUrl(file.name.substr(file.name.lastIndexOf(".") + 1)),
					files: file
				})
			}
			return false
		},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于自监督学习的多维MRI数据去噪

摘要 目的&#xff1a;开发一种基于自监督学习方法的高维MRI数据去噪框架&#xff0c;该框架无需基准真值。 方法&#xff1a;定量MRI面临着信噪比(SNR)的限制&#xff0c;而且复杂的非线性信号模型使得拟合过程容易受到噪声的影响。为了解决这些问题&#xff0c;本研究提出了…

智慧停车场反向寻车功能:蓝牙iBeacon技术赋能地下车库精准定位与导航

随着城市车辆数量的激增&#xff0c;传统停车场面临着管理效率低下、停车难、寻车难等问题。智慧停车场导航停车和反向寻车技术的引入&#xff0c;为解决这些问题提供了创新方案&#xff0c;极大提升了停车场的智能化水平和用户体验。 智慧停车场导航系统的技术架构 1.基于3D…

ETL数据集成丨快速将MySQL数据迁移至Doris数据库

随着大数据技术的迅速发展&#xff0c;越来越多的企业开始寻求高效、灵活的数据存储与分析解决方案。Apache Doris&#xff08;原名 Palo&#xff09;作为一款高性能的MPP&#xff08;大规模并行处理&#xff09;分析型数据库&#xff0c;凭借其在OLAP场景下的卓越表现&#xf…

丝滑的动态Dock栏设计:交互式网页元素的实现

动态Dock栏设计&#xff1a;交互式网页元素的实现 在现代网页设计中&#xff0c;交互性是一个关键要素&#xff0c;它能够提升用户体验并使网页更加生动。本文将深入分析一个交互式Dock栏的设计案例&#xff0c;它通过CSS自定义属性和JavaScript事件处理&#xff0c;实现了一个…

redis的集群(高可用)

redis集群的三种模式&#xff1a; 主从复制 奇数 三台 一主两从 哨兵模式 3 一主两从 cluster集群 六台 主从复制&#xff1a;和mysql的主从复制类似&#xff0c;主可以写&#xff0c;写入主的数据通过RDB方式把数据同步到从服务器&#xff0c;从不能更新到主&#xff0c;也…

UML类图 详解

总目录 前言 作为一个程序员&#xff0c;我们经常会使用UML来绘制各种图&#xff08;UML中定义了用例图、类图、时序图、协作图等九种&#xff09;&#xff0c;类图就是其中常用图之一。设计模式中经常会用到的是类图&#xff0c;本文主要是学习UML类图相关资料后的汇总笔记&a…

【原创】分析JDK17加载Sybase驱动出现递归调用的原因并解决其加载问题

前言 最近好久没发文章了&#xff0c;原因是AI太强了&#xff0c;随便问一句答案就有了&#xff0c;节约了很多折腾的时间&#xff0c;也就没法作为原创文章发布了&#xff0c;还有就是很多涉及公司内部的代码&#xff0c;没法公开发布。 这次遇到了一个项目&#xff0c;用的…

Java后端初开-->架构师学习路线!无偿分享!让你少走弯路

由于平台篇幅原因&#xff0c;很多java面试资料内容展示不了&#xff0c;需要的java面试宝典的伙伴们转发文章关注后&#xff0c;扫描下方二维码免费获取:

FFplay:FFmpeg中的多媒体播放器

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

【FANUC】发那科机器人ROBOGUIDE安装教程(含安装包)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

基于Debian用户安装星火商店

星火商店下载地址&#xff1a;https://www.spark-app.store/ 本文章我以kali linux来做示范 注:基本debian的linux包括ubuntu,mint linux,kali linux,Pop!_OS,deepin等等 1.点击下载最新版本 2.点击下载 3.点击开始下载&#xff08;它会自动跳转网页&#xff09; 4.选择要下载…

告别啃书难,4款pdf翻译成中文神器在手,阅读起来so easy

在这个快节奏的时代&#xff0c;当我们遇到外文的PDF文档时&#xff0c;能不能快速翻译成中文变得非常重要。为了帮大家解决这个问题&#xff0c;我找来了四款专门用于把pdf翻译成中文的工具。这些工具操作起来很简单&#xff0c;翻译的质量也很高&#xff0c;能帮我们大大提高…

MybatisPlus(二)

目录 扩展功能 代码生成 静态工具 逻辑删除 枚举处理器 JSON处理器 配置加密 插件功能 插件功能 分页插件(通用分页实体) 扩展功能 代码生成 静态工具 逻辑删除 逻辑删除就是基于代码逻辑模拟删除效果&#xff0c;但并不会真正删除数据。思路如下&#xff1a; • 在…

转录组数据去批次方法整理(combat,combat-seq,removeBatchEffect)

为什么需要去除批次效应&#xff1f; 批次效应是指样本在不同批次处理及测量的情况下引入与生物学情况不相关的技术误差&#xff0c;比如不同试剂耗材&#xff0c;不同操作者&#xff0c;不同的实验时间等。 正是因为这些非生物学的因素存在就有可能会导致我们的结果偏离真实…

如何模拟真实的负载情况进行测试?

模拟真实的负载情况是进行性能测试的关键步骤&#xff0c;它可以帮助我们了解系统在高负载下的表现&#xff0c;以及可能出现的问题。以下是一些模拟真实负载的方法&#xff1a; 1. 确定目标&#xff1a;首先&#xff0c;我们需要明确测试的目标&#xff0c;例如&#xff0c;我…

探索Python FastAPI的Annotated参数设计:提升代码的灵活性与可读性

在现代软件开发中&#xff0c;代码的可读性和灵活性是至关重要的。Python的FastAPI框架以其高性能和易用性而受到开发者的喜爱。FastAPI提供了一种名为Annotated的参数设计方式&#xff0c;它允许开发者以类型注解的形式增强函数参数的定义&#xff0c;从而提升代码的表达力和灵…

深度学习(RNN+VAE):高质量的音乐作品让音符飞舞起来

深度学习在音乐生成领域有着广泛的应用&#xff0c;其中循环神经网络&#xff08;RNN&#xff09;和变分自编码器&#xff08;VAE&#xff09;是两种重要的模型。下面是这两种模型在音乐生成中的应用概述&#xff1a; 1. 循环神经网络&#xff08;RNN&#xff09;在音乐生成中…

内存管理【C++】

C/C内存分布 栈又叫堆栈&#xff0c;主要存放非静态局部变量、函数参数、函数返回值&#xff0c;栈一般是向下增长的堆用于程序运行时动态内存分配数据段用于存储全局数据和静态数据代码段用于存储可执行代码和制度常量 C内存管理方式 C语言的内存管理方式在C中可以继续使用&…

RabbitMQ 入门篇

接上一篇《RabbitMQ-安装篇&#xff08;阿里云主机&#xff09;-CSDN博客》 安装好RabbitMQ后&#xff0c;我们将开始RabbitMQ的使用&#xff0c;根据官网文档RabbitMQ Tutorials | RabbitMQ&#xff0c;我们一步一步的学习。 1. "Hello World!" 这里先说明几个概…

电影票竞价系统:开发难度与代码规范全解析

电影票竞价系统成为了一种新兴的购票方式&#xff0c;它不仅提升了用户的购票体验&#xff0c;也为电影院带来了新的盈利模式。但是&#xff0c;这样一个系统的开发难度如何&#xff1f;代码又该如何规范&#xff1f;本文将一探究竟。 电影票竞价系统的开发难度 技术复杂性 …