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

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

本文实现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"><Uploadref="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"multipleaction="#"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?.imgUrlsif (result.length > 0) {item.statusFlag = 1item.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) !== -1if (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},

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 商家转账到零钱分销返佣申请方案及驳回处理办法
  • 用Python打造精彩动画与视频,7.1 视频处理中的图像处理技巧
  • 山东大学考研机试题——整数序列
  • 力扣:100379. 新增道路查询后的最短距离 I(Java,BFS)
  • Opencv图像增强技术
  • 力扣765.情侣牵手
  • 美股:Nvidia的新一代AI芯片Blackwell或因设计缺陷推迟上市
  • Spark和Flink的介绍、区别以及各自的应用场景
  • 全球社区的建立:Facebook在跨文化交流中的角色
  • 机器学习笔记 第八章集成学习
  • 揭秘eBay店铺排名提升秘诀:测评自养号的好处
  • 数据库系列: 主流分库分表中间件介绍(图文总结)
  • 【C++】list介绍以及模拟实现(超级详细)
  • 前端性能优化-性能检测指标与工具
  • 【MySQL】慢sql优化全流程解析
  • CAP 一致性协议及应用解析
  • crontab执行失败的多种原因
  • in typeof instanceof ===这些运算符有什么作用
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • python学习笔记 - ThreadLocal
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 深入浅出Node.js
  • 网络应用优化——时延与带宽
  • 为什么要用IPython/Jupyter?
  • 一文看透浏览器架构
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #pragma multi_compile #pragma shader_feature
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (6)设计一个TimeMap
  • (7) cmake 编译C++程序(二)
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十) 初识 Docker file
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (十一)图像的罗伯特梯度锐化
  • (一)UDP基本编程步骤
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net core 6 集成和使用 mongodb
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET/C# 的字符串暂存池