栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Vue.js

vue 本地预览多图上传

Vue.js 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

vue 本地预览多图上传

此组件的开发是为了后台管理的多图上传,并实现本地预览修改,当用户确认后开始整体提交,此组件使用了我的另一篇文章所用到的组件

所遇到的问题?

选择多个文件后无法实现本地预览?

  • 使用es6的for of 对获取到的文件对象数组 filelist进行迭代循环

  • 使用 FileReader 对象将选择的图片文件转换成可以前端展示的 base 64数据

  • 在新数组被将图片数据push进去就可以实现本地多图预览了

 fileChange(files) { // files 为接收到的文件对象
      const _this = this // 保存this 
      for (let i = 0; i < files.length; i++) { //对文件数组对象进行迭代循环
        const reader = new FileReader()        this.imgfiles.push(files[i])
        reader.readAsDataURL(files[i])
        reader.end = function() {          console.log(this.result)
          _this.imgs.push(this.result)
        }
      }

对不要的图片进行删除?

  • 获取图片数组下标,使用数组 slice方法进行删除
    获取下标:

   
          
    

v-for 的i就代表了数组的下标,因为我们不仅需要删除图片数组,还需要删除文件数组,删除操作:

    del(i) {      this.imgfiles.splice(i, 1)      this.imgs.splice(i, 1)      this.imgsChange()
    },

将获取到的文件对象向父组件进行广播

    imgsChange() {      this.$emit('imgsChange', this.imgfiles) //广播事件名:imgsChange,参数  this.imgfiles
    }

下面是我封装的组件的完整代码,没有进行更多的操作,仅仅是把选择的图片可以本地预览,删除,增加


  .img-box{
    position: relative;
    border:1px solid #e6e6e6;
    margin-right: 20px;
    padding-top:30px;
    background: #f6f6f6;
    img{
      width: 160px;
    }
    span {
      position: absolute;
      top:5px;
      right: 10px;
      color: red;
    }
}
.img-file{
    height: 190px;
    width: 190px!important;
    display: flex;
    align-items: center;
    font-size: 30px;
    text-align: center;
    border: 1px #e6e6e6 dashed;
    justify-content: center;
    margin: 0;
}

原文出处:https://www.cnblogs.com/yuanchenchun/p/9492112.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/241345.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号