js 判断上传图片尺寸大小(var img =new Image())
上传时常常会碰到限制图片尺寸的需求,而在后台通过byte判断大小,虽可行,但如果在JS中判断显然是更好的选择,尤其是在不限制文件大小,只限制尺寸时。
通常会使用创建Image对象,或添加一个<img>来获取,
- 1.img标签方式
<input type="button" οnclick="uploadFile()" value="验证" /><img id="imgShow" src="img.png" /><pre name="code" class="javascript">
function uploadFile(){var imgWidth = document.getElementById("imgShow").width;var imgHeight = document.getElementById("imgShow").height;alert("宽度:"+imgWidth)alert("高度:"+imgHeight)}
效果图,测试结果:
![](/assets/blank.gif)
由此可见,既然Img标签中的图片高宽均能获取,换句话说在文件上传时我们可以使用JS动态的创建一个Img对象,然后在获取高度宽度进行判断。
- 2. js 中的Image对象
图像对象:
建立图像对象:图像对象名称=new Image([宽度],[高度])
图像对象的属性: border complete height hspace lowsrc name src vspace width
图像对象的事件:onabort onerror onkeydown onkeypress onkeyup onload
var img = new Image;img.src = "xxxx"; //浏览器中可以直接访问到的<span style="font-family: Arial, Helvetica, sans-serif;">图片</span><span style="font-family: Arial, Helvetica, sans-serif;">地址</span>alert(img.height);
但,这样会发现它迟迟未达到我们想要的效果,发现在获取高度时总为0; 原因是,我们只创建了一个Image对象,并未将此对象load到浏览器中,也就是说此时浏览器是无法访问到该图片的,那么它自然无法获取成功。
var img=new Image(); img.οnlοad=function(){alert(img.height);}; img.οnerrοr=function(){alert("error!")}; img.src="xxxxxx"; function show(){alert("body is loaded");}; window.οnlοad=show;
需要注意的是:src 属性一定要写到 onload 的后面,否则程序在 IE 中会出错。
运行上面的代码后,在不同的浏览器中进行测试,发现 IE 和 FF 是有区别的,在 FF 中,img 对象的加载包含在 body 的加载过程中,既是 img加载完之后,body 才算是加 载完毕,触发 window.onload 事件。在 IE 中,img 对象的加载是不包含在 body 的加载过程之中的,body 加载完毕,window.onload 事件触发时,img对象可能还未加 载结束,img.onload事件会在 window.onload 之后触发。 如若src中的URL路劲可以通过浏览器访问到,则程序会运行成功,可以获取到高度以及宽度
但是在上传文件时,我们普遍不能直接地得到当前上传文件的URL地址,所以当以上程序放在文件上传中时会发现,仍旧无法运行。
比如如下情况:
![](/assets/blank.gif)
<pre name="code" class="javascript"><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><script>function setImg() {var docObj = document.getElementById("imgPath");var files = document.getElementById("imgPath").value;if (null == files || '' == files) {$.messager.alert('温馨提示','请上传图片封面信息。','info');return;}if(!uploadType(finals(files,"suffix"))){$.messager.alert('温馨提示','请上传bmp,png,gif,jpeg,jpg格式的图片','info'); return false;};if(!uploadfinaName(finals(files,"fileName"))){$.messager.alert('温馨提示','上传失败,文件名称只能由“数字”、“字母”、或“_”组成','info'); return false;};if (docObj.files && docObj.files[0]) {var img = new Image;img.onload = function(){ alert(img.height);var width = img.width;var height=img.height;var filesize = imgif(width!=480 || height!=1008){alert("图片尺寸不符合,请重新上传....");}else{//后续操作 提交代码}};img.οnerrοr=function(){alert("error!");};img.src=window.URL.createObjectURL(docObj.files[0]);} }</script></head>
<body><input id="imgPath" type="file" οnchange="setImg()"/>
</body>
</html>
整体代码运行成功,img.src=window.URL.createObjectURL(docObj.files[0]); 此段代码按照他人说法是,将地址转化成XX进制(不懂)的URL地址。
![](/assets/blank.gif)
js 判断上传图片尺寸大小(var img =new Image())相关推荐
- js实现上传图片类型+大小+尺寸验证
图片类型+大小+尺寸验证 html代码: <input type="file" name="files" id="file" onch ...
- js判断图片尺寸及大小
技术框架:vue + antd-vue 代码: <a-upload name="file" :multiple="true" :showUploadLis ...
- js 判断日期时间大小
参考链接 checkTime = function() { var startTime = document.getElementById("startTime").value; ...
- js判断undefined和null
js判断undefined var exp = undefined; if (typeof(exp) == "undefined") {alert("undefined& ...
- js判断是否在微信浏览器中打开网页
JS判断方法 function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/ ...
- js包含字符串判断(js判断字符串包含某个字符串)
JS代码判断字符串中有多少汉字? 本例的重点是正则表达式的应用步骤.(1)创建一个正则表达式变量"re":(2)使用"re"的"test"方 ...
- js在上传图片前判断大小
js在上传图片前判断大小 这个可以用javascript实现,效果还可以,主要是因为javascript里居然有Image对象,可以取得其属性 <script language=javascri ...
- 基于asp.net + easyui框架,js实现上传图片之前判断图片格式,同时实现预览,兼容各种浏览器+下载...
2019独角兽企业重金招聘Python工程师标准>>> 最近在做图片上传的一个前台页面,上传图片功能虽然很简单,但是需要我们学习的地方很多.在上传图片之前验证图片的格式,并同时实现预 ...
- js判断时间两小时之内_js判断两个时间的大小
js判断两个时间的大小 function checkdate() { //得到日期值并转化成日期格式,replace(//-/g, "//")是根据验证表达式把日期转化成长日期格式 ...
最新文章
- 从企业发展的四个问题,理解OKR的价值所在
- Ng-template寄宿方式
- ABAP-小技巧/知识(1)
- EMLOG仿微信主题模板V3.11
- WORD如何制作参考文献?
- .vue文件怎么使用_师父给了我一个 .proto 文件,我应该怎么使用?
- 能不用事务就尽量别用
- r语言怎么做经验分布_医学统计与R语言:对数正态分布与卡方分布
- Doclist压缩方法简介
- 有关人、社会的本质的思考--现代的捕蛇者说
- 一维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_8】
- 新手小白用C# winform 读取Excel表
- centos8 处理挖矿程序攻击
- 关闭浏览器 清除cookie
- 第九节:解决跨域问题与实现品牌查询
- 光纤传感器应力传感研究
- 阿里云ECS用docker建Discuz!论坛和mediawiki
- typeC PD是什么含义
- 机器学习:西瓜书 神经网络 学习笔记
- 最新版ser2net移植到ARM板上,交叉编译