vue用upload标签上传图片限制图片属性

页面

<el-upload
  class="avatar-uploader"
  action="https://com/posts/"
  :show-file-list="false"
  :on-success="handleAvatarSuccess"
  :before-upload="uploadBefore">
  <img v-if="imageUrl" :src="imageUrl" class="avatar">
  <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>

js代码

uploadBefore(file,done) {
      console.log(file);
      const isJPG = file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png'
      const isLt1M = file.size / 1024 / 1024 < 1;
      if (!isJPG) {
        this.$message.error('上传头像图片只能是JPG/PNG/JPEG格式!')
      }
      if (!isLt1M) {
        this.$message.error('上传头像图片大小不能超过1MB!')
      }
      let _this = this
      let imgWidth = ''
      let imgHeight = ''
      let width = 700
      let height = 300
      const isSize = new Promise(function (resolve, reject) {
        console.log(width, height)
        let _UPL = window.URL || window.webkitURL;
        let img = new Image();
        img.src = _UPL.createObjectURL(file)
        img.onload = function () {
          imgWidth = img.width
          imgHeight = img.height
          let valid = img.width <= width && img.height <= height
          valid ? resolve() : reject();
        }
      }).then(
        ()=>{
        return file
        },
        ()=>{
          _this.$message.error({
            message :'上传的图片大小不符合标准,宽需要为' + width + 'px,高需要为' + height + 'px。当前上传图片的宽高分别为'+ imgWidth + 'px和' + imgHeight + 'px',
            btn:false,
          })
          done();
          return Promise.reject(false)
        })
      console.log(isSize)
      done();
      return isJPG && isLt1M && isSize

      //如果你想修改file文件,由于上传的file是只读文件,必须复制新的file才可以修改名字,完后赋值到done函数里,如果不修改的话直接写done()即可
      //var newFile = new File([file], {type: file.type});
      //done(newFile)
 },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值