美文网首页
Upload 上传图片时,如何校验宽度和高度

Upload 上传图片时,如何校验宽度和高度

作者: zhang463291046 | 来源:发表于2020-08-20 17:26 被阅读0次

以下内容是引用或者借鉴别人的,自己只是做个笔记,方便学习。理解错误的地方,欢迎评论。如有侵权,私聊我删除,未经允许,不准作为商业用途

当是单个图片上传时,beforeUpload函数中返回的file里面没有图片的宽度和高度,所以将调用URL.createObjectURL()方法生成预览图片路径,加载图片,读取宽度和高度。点击在线运行,效果如图

image.png
  • 切记在onload方法中直接return false是无法阻止验证通过的,因为只会返回当前函数层,外层函数无法接收到
  • 因此引入Promise,通过reject,停止上传
<template>
  <div id="app">
    <el-upload
      :action="actionUrl"
      :show-file-list="false"
      :before-upload="beforeUpload"
      :on-success="handleSuccess"
      accept="image/*"
    >
      <el-button size="small" type="primary">点击上传</el-button>
      <div slot="tip" class="el-upload__tip">图片尺寸只支持900px*383px(请上传png图片)</div>
      <img v-show="imgUrl" :src="imgUrl" width="300" />
    </el-upload>
  </div>
</template>

<script>
export default {
  name: "App",
  components: {},
  data() {
    return {
      actionUrl: "https://jsonplaceholder.typicode.com/posts/", //正式环境上传地址
      imgUrl: ""
    };
  },
  mounted() {},
  methods: {
    beforeUpload(file) {
      console.log(file);
      let result = new Promise((resolve, reject) => {
        const ff = file.name;
        if (!/.(gif|jpg|jpeg|png|gif|jpg|png)$/gi.test(ff)) {
          this.$message.warning("封面图片只能是图片");
          reject();
        } else {
          var img_src = URL.createObjectURL(file);
          var img_temp = new Image();
          img_temp.src = img_src;
          img_temp.onload = () => {
            if (img_temp.width == 900 && img_temp.height == 383) {
              resolve(true);
            } else {
              this.$message.warning("图片尺寸只支持900px*383px");
              reject(false);
            }
          };
        }
      });
      return result;
    },
    handleSuccess(res) {
      console.log(res);
      // this.imgUrl = res.datas && res.datas.url;    //正式环境返回的url
      this.imgUrl =
        "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg";
    }
  }
};
</script>

注意element-uiupload组件,添加multiple属性,多个上传时,实际上是循环调取单个上传(这部分可查看源码),因此会多次执行beforeUploadhandleSuccess方法,它实现的是校验通过即可上传,而不能实现等到全部校验都通过,再一次性上传。

看下一篇自定义上传图片时,如何校验宽度和高度

相关文章

网友评论

      本文标题:Upload 上传图片时,如何校验宽度和高度

      本文链接:https://www.haomeiwen.com/subject/bsaqjktx.html