vue 检测用户上传图片宽高的方法


Posted in Javascript onFebruary 06, 2020

需求:

用户可上传3-6张图片(第 1 2 3 张必须传),上传的图片必须是540 * 330 像素。

第一步,获取上传的图片的宽高。

初始化一个对象数组,宽高均设为0。

如果用户上传的图片没有上限,可以动态修改这个对象数组。

data:

picArray:[
  {
   width:0,
   height:0
  },
  {
   width:0,
   height:0
  },
  {
   width:0,
   height:0
  },
  {
   width:0,
   height:0
  },
  {
   width:0,
   height:0
  },
  {
   width:0,
   height:0
  }
  ],

HTML:

<myupload :keys="index" @getBase="getUpImg">
    
</myupload>

myupload是上传图片的组件,略。 

methods:

getUpImg(imgurl, keys){
  if(keys === 9){
  this.submitData.logo_img = imgurl
  this.logoImgCount = true
  } else {
  Vue.set(this.imgListArray,keys,imgurl)
  
  this.$nextTick(function(){
   let img = document.getElementById('picId' + keys)
   // console.log(img)
   let picArray = this.picArray
   img.onload = function () {
   console.log(keys)
   console.log(this.naturalWidth)
   console.log(this.naturalHeight)
   let o = {
    width: this.naturalWidth,
    height: this.naturalHeight
   }
   Vue.set(picArray,keys,o)
   console.log('picArray', picArray)
   }
  })
  }  
 },

关键的代码用红色标出了。

值得注意的是:获取宽高必须用 this.$nextTick ,里面再写 img.onload 。this.naturalWidth 是图片原本的宽高。此时 this 指的是当前图片对象。

 第二步,提交之前检验图片的宽高。

methods:

imageCheck(){
  let checkboolean = true
  let check = {
  'width': [[540],[0,540]],
  'height': [[330],[0,330]]
  }
  let f1 = function (num,index,type) {
  let n = num
  let i = index
  let t = type
  let b = false
  // console.log(n,i,t)
  for (let x = 0; x < check[type][i].length; x++) {
   if (check[type][i][x] === num) {
   // console.log('>>>>>>>>>>>>>' + check[type][i][x] + '===' + num + '>>>>>>>>>>>>>>>>' )
   b = true
   }   
  }
  return b
  }
  for (let i = 0; i < this.picArray.length; i++) {

  let cb = true

  for (let x in this.picArray[i]) {
   let number = this.picArray[i][x]
   // console.log(x,number)
   if (x === 'width' && i < 3) {
   checkboolean = f1(number, 0, 'width')
   if (!checkboolean) {
    // console.log('=================',i,x,number,'return false')
    cb = false
    break
   }
   } else if (x === 'width' && i >= 3) {
   checkboolean = f1(number, 1, 'width')
   if (!checkboolean) {
    // console.log('=================',i,x,number,'return false')
    cb = false
    break
   }
   } else if (x === 'height' && i < 3) {
   checkboolean = f1(number, 0, 'height')
   if (!checkboolean) {
    // console.log('=================',i,x,number,'return false')
    cb = false
    break
   }
   } else if (x === 'height' && i >= 3) {
   checkboolean = f1(number, 1, 'height')
   if (!checkboolean) {
    // console.log('=================',i,x,number,'return false')
    cb = false
    break
   }
   }
  }

  if (!cb) {
   break
  }
  }
  return checkboolean
 },


// sumbit function
...
  if(!this.imageCheck()){
  this.$message({
   message: this.MASSAGE_imagecheck,
   type: 'error'
  });
  return false
  }
  alert('可以传图')
...

$message 是elementUI的组件。

imageCheck 就是检验图片宽高用的方法。返回布尔值,false表示图片宽高不符合要求(或者没有传图)。

其中:

checkboolean 是最终要返回的布尔值。

check 是装载合法宽高值的对象。因为后3张图可传可不传,所以 width 和 height 都是二阶数组。数字是符合要求的值。

f1 是检验某一张图宽高的函数,传入宽高值、下标(第几张)、类型(width height),返回布尔值,false表示图片宽高不符合要求(或者没有传图)。

执行 imageCheck 方法的时候会直接执行循环,如果发现图片不符合要求就跳出并返回 false 给函数外。

里循环中的 x 代表类型,i 代表下标。

使用:在提交时执行 imageCheck 方法即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery筛选器全系列介绍
Aug 27 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
Aug 22 Javascript
jquery简单实现外部链接用新窗口打开的方法
May 30 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 Javascript
鼠标悬停小图标显示大图标
Jan 22 Javascript
jQuery Mobile操作HTML5的常用函数总结
May 17 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
Aug 05 Javascript
Angular.js中处理页面闪烁的方法详解
Mar 09 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
Dec 19 Javascript
vue 实现边输入边搜索功能的实例讲解
Sep 16 Javascript
JS实现的字符串数组去重功能小结
Jun 17 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 Javascript
vue中对象数组去重的实现
Feb 06 #Javascript
2019最新21个MySQL高频面试题介绍
Feb 06 #Javascript
node.JS路径解析之PATH模块使用方法详解
Feb 06 #Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 #Javascript
JavaScript实现左右滚动电影画布
Feb 06 #Javascript
6种JavaScript继承方式及优缺点(小结)
Feb 06 #Javascript
使用node.JS中的url模块解析URL信息
Feb 06 #Javascript
You might like
隐藏你的.php文件的实现方法
2007/03/19 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
PHP反射API示例分享
2016/10/08 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
jquery禁用右键示例
2014/04/28 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
js canvas实现俄罗斯方块
2020/10/11 Javascript
Python程序员开发中常犯的10个错误
2014/07/07 Python
python执行get提交的方法
2015/04/29 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Python 如何批量更新已安装的库
2020/05/26 Python
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
美国牛仔品牌:True Religion
2018/11/16 全球购物
管理科学大学生求职信
2013/11/13 职场文书
写给老师的表扬信
2014/01/21 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL