• elementui 之upload 文件上传


    element-ui 之upload 文件上传

    多个文件上传

    使用: :file-list="imgUrl" 和 :http-request="uploadPicture"

    <template>
        <div class="fei-upload">
            <el-upload
                    class="picture-uploader"
                    :class="{hideUpload:imgUrl.length>fileLimit}"
                    :limit=fileLimit+1
                    action=""
                    ref="uploader"
                    :file-list="imgUrl"
                    :http-request="uploadPicture"
                    :before-upload="beforeUpload"
                    list-type="picture-card"
                    :on-preview="handlePictureCardPreview"
                    :on-remove="handleRemove">
                <i class="el-icon-plus"></i>
            </el-upload>
            <el-dialog :visible.sync="dialogVisible">
                <img width="100%" :src="dialogImageUrl" alt=".">
            </el-dialog>
        </div>
    </template>
    <script>
      /* 这是ElementUI */
      import Vue from 'vue'
      import ElementUI from 'element-ui';
      import 'element-ui/lib/theme-chalk/index.css';
      Vue.use(ElementUI);
      /* 这是ElementUI */
    
      export default {
        components:{},
        data() {
          return {
            dialogImageUrl: '',
            dialogVisible: false,
            imgUrl: [], // 上传所有文件列表
          }
        },
        props: {
          typeString: { // 上传图片类型
            type: String,
            default: "fei_type"
          },
          fileLimit: { // 上传图片张数
            type: Number,
            default: 1,
          },
    
        },
        methods: {
          handleRemove(delFile, newFileList) {
            this.imgUrl = [...newFileList];
            this.updateParentImg();
          },
          handlePictureCardPreview(file) {
            this.dialogImageUrl = file.url;
            this.dialogVisible = true;
          },
          uploadPicture(req) {
            const reader = new FileReader();
            reader.readAsDataURL(req.file);
            reader.onload = () => {
              let _index = req.file.name.lastIndexOf(".");
              let suffix = req.file.name.substr(_index);
    
              // 上传图片
              const params = {
                suffix: suffix,
                type: this.typeString,
                base64: reader.result.split(',')[1]
              }
              api.$post(params).then(res => {
                if (res.data.code=== 200) {
                  let _url = res.data.data.url
                  this.imgUrl.push({id: res.data.data.fileId, name: req.file.name, url: _url});
                  this.updateParentImg();
                } else {
                  this.$message.error('上传失败')
                }
              }).finally(() => {
                this.loading = false
              })
            }
          },
          updateParentImg() {
            this.$emit('parentImgList', this.imgUrl);
          },
          beforeUpload(file) {
            console.log(file);
          },
        },
      };
    </script>
    <style lang="sass" scoped>
    .fei-upload {
        .hideUpload::v-deep {
            .el-upload--picture-card {
                visibility: hidden;
            }
        }
    }
    </style>
    View Code

  • 相关阅读:
    shell 遍历当前目录以及所有子目录下文件
    linux shell 字符串操作(长度,查找,替换)详解
    将自定义结构存入std::set 或者 std::map
    CentOS下搭建SVN服务器
    基于Debian的linux系统软件安装命令
    rm搭配grep删除符合条件的文件
    Centos系统环境
    怎么恢复用mysqldump备份数据和恢复数据
    mac 安装 node.js 的 canvas
    centos 6.5 安装 node.js 的 canvas模块
  • 原文地址:https://www.cnblogs.com/dafei4/p/16308800.html
Copyright © 2020-2023  润新知