vue  文件: 自行引用 elemen-ui 
 
    <el-upload
                        action=" 让后端给你上传地址 "
                        list-type="picture-card"
                        accept="image/*"
                        :limit="1"
                        :file-list="productImgs"
                        :multiple="isMultiple"
                        :on-preview="handlePictureCardPreview"
                        :on-remove="handleRemove"
                        :on-success="handleAvatarSuccess"
                        :before-upload="beforeAvatarUpload"
                        :on-exceed="handleExceed"
                        :on-error="imgUploadError">
                        <i class="el-icon-plus"></i>
                    </el-upload>
                    <el-dialog :visible.sync="dialogVisible">
                        <img width="100%" :src="data:image" alt="">
                    </el-dialog>
 
data:
 
image: '',
            dialogVisible: false,
            productImgs: [],
            isMultiple: true,
 
 
methods: 
handleRemove(file, fileList) {//移除图片
            this.$message.success("删除图片成功")
        },
        handlePictureCardPreview(file) {//预览图片时调用
            this.image = file.url;
            this.dialogVisible = true;
        },
        
        beforeAvatarUpload(file) {//文件上传之前调用做一些拦截限制
            const isLt2M = file.size / 1024 / 1024 < 2;
 
    //格式限制    
    var testmsg=file.name.substring(file.name.lastIndexOf('.')+1)
                const extension = testmsg === 'png'
                const extension2 = testmsg === 'jpg'
                
                if(!extension && !extension2) {
                    this.$message({
                        message: 'icon 图只能是 png / jpg 格式!',
                        type: 'warning'
                    });
                    return false;//必须加上return false; 才能阻止
                }
 
  
    // 大小限制
            if (!isLt2M) {
            this.$message.error('上传图片大小不能超过 2MB!');
            }
 
    // 宽高限制

    const isSize = new Promise(function(resolve, reject){
                    let width = 400;
                    let height = 400;
                    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({
                        message:'icon图尺寸只能是400*400px!请重新选择!',
                        type: 'warning'
                    });
                    return Promise.reject()
                    return false;//必须加上return false; 才能阻止
                })
 
            return jp&& isLt2M && isSize;
        },
        handleAvatarSuccess(res, file) {//图片上传成功
            console.log(res);
            console.log(file);
            this.imageUrl = URL.createObjectURL(file.raw);
        },
        handleExceed(files, fileList) {//图片上传超过数量限制
            this.$message.error('上传图片不能超过6张!');
        },
        imgUploadError(err, file, fileList){//图片上传失败调用
            this.$message.error('上传图片失败!');
        }
 
 
 
 
 

vue element-ui 组件上传图片 以及对 图片的 宽高 和 大小 格式等 做出限制的更多相关文章

  1. Vue + Element UI 实现权限管理系统 前端篇(九):接口格式定义

    接口请求格式定义 前台显示需要后台数据,我们这里先把前后端交互接口定义好,没有后台的时候,也方便用mock模拟. 接口定义遵循几个规范: 1. 接口按功能模块划分. 系统登录:登录相关接口 用户管理: ...

  2. .Net 上传图片之前获取图片的宽高

    Stream st = Request.Files[0].InputStream;                  Byte[] buffer = new Byte[st.Length];      ...

  3. vue+element ui 的上传文件使用组件

    前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...

  4. vue+element ui 的表格列使用组件

    前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...

  5. vue+element ui中select组件选择失效问题原因与解决方法

    codejing 2020-07-10 09:13:31  652  收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...

  6. 基于 vue+element ui 的cdn网站(多页面,都是各种demo)

    前言:这个网站持续更新中...,有网上预览,github上也有源码,喜欢记得star哦,欢迎留言讨论. 网站地址:我的个人vue+element ui demo网站 github地址:yuleGH g ...

  7. vue + element ui 实现实现动态渲染表格

    前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...

  8. [转]VUE优秀UI组件库合集

    原文链接 随着SPA.前后端分离的技术架构在业界越来越流行,前端的业务复杂度也越来越高,导致前端开发者需要管理的内容,承担的职责越来越多,这一切,使得业界对前端开发方案的思考多了很多,以react.v ...

  9. vue + element ui 表格自定义表头,提供线上demo

    前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...

随机推荐

  1. Intouch/ifix语音报警系统制作(2)

    在我的先前一篇关于语音报警系统制作的文章中,阐述了如何通过标签组来获得@name@的详细内容,以通过这种方式来进行详细的设备故障播报.经过一段时间的试运行,发现使用标签组的方式会产生较大的耦合,(即当 ...

  2. vulnhub-DC:6靶机渗透记录

    准备工作 在vulnhub官网下载DC:6靶机DC: 6 ~ VulnHub 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:192.168.200.6) 信息收集 利用nmap ...

  3. 将MNIST手写数据集转换成图片保存到本地

    # 加载图片 data = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = data.load_data() plt.im ...

  4. Postman API 接口测试、Jenkin 持续集成测试

    Postman 是一个创建和使用API的应用,Postman 对于Web开发者来说非常有用,Postman 带来的便利有很多,诸如: RESTFul接口测试不依赖其他端,进度不受影响 测试脚本即文档, ...

  5. ETL需求要求

    前言 ETL落地dw层,dw层各表一般是由多个表关联取数得到的大宽表,在ETL需求中的dw设计应该考虑以下内容,目的是确保需求更清晰,开发和测试才能更高效的进行. 业务需求为基础 基于业务需求做足够多 ...

  6. Kurento实战之三:知识点小导游

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. SSRF详解

    上一篇说了XSS的防御与绕过的思路,这次来谈一下SSRF的防御,绕过,利用及危害 0x01 前置知识梳理 前置知识涉及理解此漏洞的方方面面,所以这部分要说的内容比较多 SSRF(Server-Side ...

  8. 使用autopep8自动规范化python3代码

    技术背景 编码规范是所有编程语言都有可能面临的问题,严格的按照编码规范来写代码,不仅能够提高代码的可读性,在后续程序的可维护性上面也有较大的帮助.尤其是在开源项目中,一个具备良好编程规范的项目往往能够 ...

  9. 手机摄像头作为视频画面捕捉设备与OBS连接(有线)

    手机有线连接OBS(以无他伴侣作为测试案例) 1.硬件设备 安卓手机1台.安卓手机对应的数据线.电脑2台(windows系统,1台做OBS与手机连接.1台做直播后台:配置等如果能达到要求也可以只使用一 ...

  10. Java Slf4j日志配置输出到文件中

    1.概述 新项目需要增加日志需求,所以网上找了下日志配置,需求是将日志保存到指定文件中.网上找了下文章,发现没有特别完整的文章,下面自己整理下. 1.Java日志概述 对于一个应用程序来说日志记录是必 ...