• ElementUI : Upload 上传文件再编辑显示的两种方式


    1.直接将文件名以文本的方式展现

    后台返回的链接以逗号的形式分隔,初始化定义一个数组:files: []
    页面结构:

    <el-upload
        class="upload-demo"
        ref="upload"
        :action="actionPath"
        :file-list="files" >
      <el-button slot="trigger" size="small" type="primary">选取文件</el-button
      </el-upload>

    处理后台返回的文件链接代码:

    let vm = this;
    if(res.attachment) { //后台返回的文件链接
        let a = (res.attachment).split(',');  
        if(a.length > 0) {
            a.forEach(item => {
                var obj = {} 
                let index = item.lastIndexOf('\/');
                let fileName  = item.substring(index + 1, item.length); //最后的文件名截取出来
                vm.$set(obj,'name',fileName);
                vm.$set(obj,'url',item);  //修改files里面的结构(name,url)
                vm.files.push(obj);
            })
        }
    }

    最后的页面显示如下:

    2.以图标的方式展现
    页面结构及相关CSS:

    <ul class="download-imgs">
        <li class="need-enclosure clearfix" v-for="(item, index) in attachment" :key="index">
            <img class="natural-img" :src="item" v-if="(/.png|.jpg|.jpeg/).test(item)"  style="position:relative" >
             <img :src="downLoadImg(item)" v-else  style="position:relative">
             <p>{{item | formatName}}</p>
              <div class="img-hover">
                  <div class="preview" v-if="(/.png|.jpg|.jpeg/).test(item)" @click="showImg(item)">预览</div>
                 <a class="preview" :href="item" target="_blank" v-else-if="(/.pdf|.txt/).test(item)">预览</a>
                 <a class="preview" :href="item" v-else>下载</a>
               </div>
         </li>
     </ul>
     
    <!--点击图片放大dialog-->
    <el-dialog :visible.sync="dialogImg">
        <img width="100%" :src="imgExpand" alt="">
    </el-dialog>
    .need-enclosure{
          display: inline-block;
          margin-right:5px;
          position: relative;
      }
      
    .need-enclosure p { /* 文件名过长后显示省略号 */
        width: 90px;
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
    }
      .preview {
          position: absolute;
          left:20px;
          bottom:20px;
          cursor: pointer;
          border: 1px solid #fff;
          padding: 0 10px;
          color: #fff;
      }
      .preview-img {
          width: 70px;
          height: 47px;
    
      }
      .natural-img{
          width: 90px;
          height: 67px;
      }
      .need-enclosure:hover .img-hover{
          display: block;
      }
      .img-hover {
          width: 90px;
          height: 67px;
          background: rgba(29,29,30,0.7);
          position: absolute;
          top: 0;
          left: 0;
          display: none;
      }

    初始化数据:

    downLoadImgs:[ 
         {type:0,url:'/static/images/bg_image.png'},
         {type:1,url:'/static/images/doc.png'},
         {type:2,url:'/static/images/ppt.png'},
         {type:3,url:'/static/images/excel.png'},
         {type:4,url:'/static/images/txt.png'},
         {type:5,url:'/static/images/pdf.png'},
         {type:6,url:'/static/images/zip.png'}
    ],

    处理后台返回文件链接:

    //返回显示文件图标的地址函数
    downLoadImg(item){
        if(/.txt/.test(item)){
            return this.downLoadImgs[4].url;
        }else if(/.doc|.docx/.test(item)){
            return this.downLoadImgs[1].url;
        }else if((/.png|.jpg|.jpeg/).test(item)){
            return this.downLoadImgs[0].url;
        }else if(/.ppt|pptx/.test(item)){
             return this.downLoadImgs[2].url;
         }else if(/.xls/.test(item)){
              return this.downLoadImgs[3].url;
         }else if(/.zip|.rar/.test(item)){
               return this.downLoadImgs[6].url;
          }else if(/.pdf/.test(item)){
                return this.downLoadImgs[5].url;
          }
    },
                
    //预览执行结果的图片
     showImg(url) {
         this.imgExpand = url;
        this.dialogImg = true;
     },

    显示文件名的过滤器:

    filters: {
                formatName(cellvalue){
                    //console.log(cellvalue)
                    if(cellvalue.length > 9){
                        let index = cellvalue.lastIndexOf('\/');
                        let demandName = cellvalue.substring(index + 1,cellvalue.length)
                        return demandName;
                    }else {
                        return cellvalue;
                    }
                },
            }

    最后的页面显示如下:

  • 相关阅读:
    数组
    数据结构的三个方面
    java数据结构和算法
    HashMap实现原理
    面试必问---HashMap原理分析
    Java中:>>>和>>区别
    java运算符 与(&)、非(~)、或(|)、异或(^)
    Java集合详解(全)
    String、StringBuffer、StringBuilder的区别
    abstract关键字、final关键字、static关键字、访问修饰符详解
  • 原文地址:https://www.cnblogs.com/windok/p/15951227.html
Copyright © 2020-2023  润新知