当前位置: 首页 > 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},

http://www.lryc.cn/news/414753.html

相关文章:

  • Radxa ROCK 3C开发板编译Opencv,支持调用树莓派摄像头模块V2
  • Spring02
  • Linux系统中的高级内核模块调试技术
  • 竞赛报名管理系统asp.net+sqlserver
  • Python爬虫核心面试题2
  • 【2024年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现
  • HTTP/2:让网络飞起来
  • C++ primer plus 第17 章 输入、输出和文件:刷新输出缓冲区
  • 项目总结2
  • PXE实现自动批量安装部署操作系统
  • Cyber Weekly #18
  • Open Interpreter - 开放解释器
  • “八股文”:程序员的福音还是梦魇?
  • 数据结构第2天作业 8月3日
  • 设计界的新宠:5款热门UI在线设计软件评测
  • github添加ssh密钥,通过ssh方式推送代码
  • Python设计模式 - 抽象工厂模式
  • 【JavaEE初阶】懒汉模式与饿汉模式及指令重排序问题
  • Vue3使用Cascader 级联选择器如何获取值并提交信息
  • Python面试整理-第三方库
  • 电脑添加虚拟网卡与ensp互联,互访
  • 悬而未决:奇怪的不允许跨域CORS policy的问题
  • 索引优化秘籍:SQL Server数据库填充因子的调优艺术
  • ffmpeg 的内存分配架构
  • Vue+live2d实现虚拟人物互动(一次体验叙述)
  • 内联函数的概念和用途以及区别
  • rust 桌面 sip 软电话(基于tauri 、pjsip库)
  • Linux 进程优先级、程序地址空间、进程控制
  • 学习笔记一
  • Linux中信号的发送及信号的自定义捕捉方法