el-upload上传文件详解

自动上传

官网中el-upload的自动上传属性默认是true,因此想要实现自动上传配置以下参数即可

  • action:必传参数,即放置后端上传文件的接口地址:如http:localhost:8080/upload
  • headers:一般上传文件有登入的限制时,可在headers配置token
  • mulitiple:可根据实际要求选择true或者false
  • data:当上传文件还需要带一些其他参数时需要用到该属性,若没有可以不用配置,如:
     <el-upload
              name="file"
              :action="uploadvideoimg"
              accept="image/jpeg,image/png"
              :show-file-list="false"
              :data="{ uuid: this.imguuid }"
              :headers="headers"
            >
    </el-upload>

  • name:若后端接口上传的文件参数为file,即name='file'

  • 可配合文件上传成功的钩子on-success,实现图片回显,on-success的函数的response即后端上传接口返回200状态码的内容

  •    imguploadSuccess(res) {
          this.videoimgurl = res.data;
        },
     <el-upload
              name="file"
              :action="uploadvideoimg"
              accept="image/jpeg,image/png"
              :show-file-list="false"
              :on-error="imguploadError"
              :on-success="imguploadSuccess"
              :before-upload="imgBeforeUpload"
              :headers="headers"
            >
              <el-button size="small" type="primary" class="upvideoimg"
                >上传视频封面</el-button
              >
            </el-upload>
            <img class="videoimg" :src="videoimgurl" fit="cover" />
    
     data() {
        return {
          videoimgurl:'',
          uploadvideoimg: process.env.VUE_APP_BASE_API + "/photo/uploadPhoto",
          headers: {
            Authorization: "Bearer " + getToken(),
          },
        };
    },
     methods: {
       
        imguploadError() {
          this.$message.error("图片插入失败");
          this.videoimgurl = add;
        },
        //上传成功
        imguploadSuccess(res) {
          //回显图片
          this.videoimgurl = res.data;
        },
        imgBeforeUpload(coverUrl) {
          this.imguuid = this.$uuid.v1();
          const isLt = coverUrl.size / 1024 / 1024 < 5;
          if (!isLt) {
            this.$message.error(`上传文件大小不能超过 5 MB!`);
            return false;
          }
          return true;
        },
      },

手动上传

  • action:必传参数,但是由于是手动上传并不会用这个接口,只是依然需要写一下
  • http-request:自定义上传的函数,可通过搭配auto-upload="fasle",ref="uploadImg"来实现手动上传
  • 调用this.$refs.uploadImg.submit()时会自动执行自定义函数的上传功能
  • 流程:首先点击选择图片的按钮,进行文件选择,选择后由于文件列表发生变化调用uploadImgChange()函数,可通过该函数获取图片的文件并进行Url的转换。在点击确认上传即调用自定义方法uploadImg实现上传文件的功能,若上传成功则会调用on-success的函数uploadImgSuccess,执行成功后对应的操作
         <div class="video-content">
                <h1>视频封面</h1>
                <el-upload
                    name="image"
                    ref="uploadImg"
                    :action="uploadImgUrl"
                    :multiple="false"
                    :show-file-list="false"
                    :on-change="uploadImgChange"
                    :on-success="uploadImgSuccess"
                    :http-request="uploadImg"
                    :auto-upload="false"
                    :limit="1"
                    >
                    <el-button>选择图片</el-button>
                </el-upload>
                <div class="video">
                    <img :src="imgUrl" alt="">
                    <span class="video-msg" v-show="imgUrl==''">精美的封面将会吸引更多人的观看~</span>
                </div>
            </div>
         <el-button @click="submitImg"> 确认上传</el-button>


methods:{
        //选择图片时文件发生变化调用该函数,获取图片的文件并通过URL.createObjectURL(file)获取图片url回显
        uploadImgChange(res){
            this.imgFile = res.raw;
            this.imgUrl =  URL.createObjectURL(res.raw);
        },
        uploadImgSuccess(res){
            console.log("图片上传成功");
            console.log(res);
        },
        //定义上传图片方法
        uploadImg() {
            var formData = new FormData();
            formData.append('videoId',this.videoId);
            formData.append('image',this.imgFile);
            api.uploadImg(formData).then(res => {
                if(res.data.code == 200){
                    this.$message({
                        type:'success',
                        message:'发布成功!'
                    })
                    //清空上传列表
                    this.$refs.uploadImg.clearFiles();
                  
                }else{
                    this.$message({
                        type:'error',
                        message:'发布失败,'+res.data.msg
                    })
                }
            }).catch(err => {
                this.$message({
                        type:'error',
                        message:'发布失败,'+err.data.msg
                    })
            })
        },
        //确认上传的函数
        submitImg(){
  
                //调用手动上传的方法
                this.$refs.uploadImg.submit();
            
        }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值