【Vue】el-upload上传

参考官网:
https://element.eleme.cn/#/zh-CN/component/upload

上传图片
效果图:
在这里插入图片描述
实现代码:

<el-form-item label="上传banner" prop="logo">
  <span>支持扩展名:.png \ .jpg \ .jpeg;文件大小为:1920*676 px</span>
  <el-upload
    class="avatar-uploader"
    :headers="headers"
    accept="image/png,image/jpg,image/jpeg"
    :action=uploadUrl
    :show-file-list="false"
    :on-success="handleAvatarSuccess"
    :beforeUpload="beforeAvatarUpload">
    <img v-if="dataForm.logo" :src="dataForm.logo" class="avatar">
    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  </el-upload>
</el-form-item>
handleAvatarSuccess (res, file) {
  console.log(res)
  this.dataForm.logo = res.uri
  console.log(this.dataForm.logo)
},
beforeAvatarUpload(file) {
  let _this = this
  const isSize = new Promise(function (resolve, reject) {
    let width = 1920; // 限制图片尺寸为1920X676
    let height = 676;
    let _URL = window.URL || window.webkitURL;
    let img = new Image();
    img.onload = function () {
      let valid = img.width === width && img.height === height;
      valid ? resolve() : reject();
    }
    img.src = _URL.createObjectURL(file);
  }).then(() => {
    return file;
  }, () => {
    _this.$message.error('图片尺寸限制为1920*676')
    return Promise.reject();
  });
  return isSize
}
data () {
  return {
    uploadUrl: ''
  }
}
init (id) {
  this.uploadUrl = this.$http.adornUrl(`/services/oss/upload/batch`)
}

上传视频
有进度条,只可上传一个:效果图如下:
在这里插入图片描述

实现代码:

<el-form-item label="视频" prop="url">
  <span>支持扩展名:.mp4,文件大小不得超过50M</span>
  <el-button v-if="dataForm.url !='' && videoFlag == false && !editDisabled" type="text" @click="removeVideo()">删除视频</el-button>
  <el-upload
    class="avatar-uploader"
    v-if="!dataForm.url"
    :disabled="editDisabled || uploadVideoDisabled"
    :headers="headers"
    :action=uploadUrl
    accept="audio/mp4, video/mp4"
    :show-file-list="true"
    list-type="picture-card"
    :before-upload="beforeUploadVideo"
    :on-progress="uploadVideoProcess"
    :on-success="handleVideoSuccess"
    :limit="1">
    <i class="el-icon-plus"></i>
 </el-upload>
  <video v-if="dataForm.url !='' && videoFlag == false" :src="dataForm.url" class="avatar" controls="controls">您的浏览器不支持视频播放</video>
</el-form-item>
//上传视频限制格式
beforeUploadVideo(file) {
  const isLt10M = file.size / 1024 / 1024  < 50;
  if (!isLt10M) {
    this.$message.error('上传视频大小不能超过50MB哦!');
    return false;
  }
  this.uploadVideoDisabled = true
},
//上传成功
handleVideoSuccess(res, file) {                               //获取上传图片地址
  this.uploadVideoDisabled = false
  this.videoFlag = false;
  this.videoUploadPercent = 0;
  if(res.status === 'success'){
    this.dataForm.url = res.uri;
  }else{
    this.$message.error('视频上传失败,请重新上传!');
  }
}
data () {
  return {
    editDisabled: false,
    uploadVideoDisabled: false,
    videoFlag: false,
    uploadUrl: ''
  }
}
init (id,state,flag) {
  this.uploadUrl = this.$http.adornUrl(`/services/oss/upload/batch`)
}
发布了253 篇原创文章 · 获赞 76 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/hongwei15732623364/article/details/96477731