js限制上传图片大小

需求:前端页面开发中,常遇到图片上传的需求,一般要求限制图片格式及大小。

说明:这里就把实现此功能所需代码贴出来,供同志们参考,也方便我以后复用。

要点:1.处理 类型type为file的输入元素的value值,进行判断。2.处理类型type为file的输入元素的files[0].size值。

备注:当然value和 size都是浏览器提供的api

代码:

  1. <!DOCTYPE html>  
  2. <html>  
  3. <body>  
  4.   
  5. <!-- 注意此处form的name属性为form 这样才可以document.form通过name属性获得元素 -->  
  6. <form action="" name="formx" method="post" enctype="multipart/form-data">  
  7.     <!-- 图片选中后触发onchange事件 -->  
  8.     <input type="file" name="userfile" onchange="check()"/>  
  9.     <!-- 存放页面反馈信息的dom节点 -->  
  10.     <span id="spacex"></span>  
  11. </form>  
  12.   
  13. </body>  
  14. <script type="text/javascript">  
  15.     function check(){  
  16.         //分割上传文件字符串  userfile的value为上传文件的名称 类型为字符串。  
  17.         var fileNameArr = document.formx.userfile.value.toLowerCase().split('.');  
  18.                      //或者document.getElementById("userfile")    也可以获得该dom元素  
  19.         //文件名后缀  
  20.         var suffix = fileNameArr[fileNameArr.length-1];  
  21.         //如果后缀为空  
  22.         if(suffix==""){  
  23.             alert("图片不能为空!");  
  24.             return false;  
  25.         }else{  
  26.             if(suffix=='gif'||suffix=='jpg'||suffix=='bmp'||suffix=='png'||suffix=='jpeg'){  
  27.                 var imgSize = document.formx.userfile.files[0].size;  
  28.                 alert("图片大小:"+imgSize+"B");  
  29.                 if(imgSize<1024*1024*3){  
  30.                     document.getElementById("spacex").innerText = "文件小于3m ok!";  
  31.                     return true;  
  32.                 }  
  33.             }else{  
  34.                 document.getElementById("spacex").innerText = "请选择格式为*.jpg、*.gif、*.bmp、*.png、*.jpeg 的图片";  
  35.                 return false;  
  36.             }  
  37.         }  
  38.     }  
  39. </script>  
  40.   
  41. </html>  
  42. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>最新javascript自动按比例显示图片,按比例压缩图片显示</title>
    <script type="text/javascript">
    function AutoResizeImage(maxWidth,maxHeight,objImg){
    var img = new Image();
    img.src 
    = objImg.src;
    var hRatio;
    var wRatio;
    var Ratio = 1;
    var w = img.width;
    var h = img.height;
    wRatio 
    = maxWidth / w;
    hRatio 
    = maxHeight / h;
    if (maxWidth ==0 && maxHeight==0){
    Ratio 
    = 1;
    }
    else if (maxWidth==0){//
    if (hRatio<1) Ratio = hRatio;
    }
    else if (maxHeight==0){
    if (wRatio<1) Ratio = wRatio;
    }
    else if (wRatio<1 || hRatio<1){
    Ratio 
    = (wRatio<=hRatio?wRatio:hRatio);
    }
    if (Ratio<1){
    = w * Ratio;
    = h * Ratio;
    }
    objImg.height 
    = h;
    objImg.width 
    = w;
    }
    </script>
    </head>
    <body>
    <br />
    原图显示(534 X 800)
    <br />
    onload="AutoResizeImage(0,0,this)
    <br />
    <href="http://p.blog.csdn.net/images/p_blog_csdn_net/feng_sundy/421506/o_09925c7bcead8c60f683298dacf497a6.jpg" target="_blank"><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/feng_sundy/421506/o_09925c7bcead8c60f683298dacf497a6.jpg" border="0" width="0" height="0" onload="AutoResizeImage(0,0,this)" alt="534 X 800"/></a><br/><br />
    1.按宽度250压缩,不限制高度 按比例压缩
    <br />
    onload="AutoResizeImage(250,0,this)"
    <br />
    <href="http://blog.csdn.net/feng_sundy/archive/2008/06/19/2566028.aspx" target="_blank"><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/feng_sundy/421506/o_09925c7bcead8c60f683298dacf497a6.jpg" border="0" width="0" height="0" onload="AutoResizeImage(250,0,this)"  alt="250 X 374"/></a><br /><br />
    2.按高度250压缩,不限制宽度 按比例压缩
    <br />
    onload="AutoResizeImage(0,250,this)"
    <br />
    <href="http://blog.csdn.net/feng_sundy/archive/2008/06/19/2566028.aspx" target="_blank"><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/feng_sundy/421506/o_09925c7bcead8c60f683298dacf497a6.jpg" border="0" width="0" height="0" onload="AutoResizeImage(0,250,this)"  alt="166 X 250"/></a><br /><br />
    3.按高度250宽度250 按比例压缩
    <br />
    onload="AutoResizeImage(250,250,this)"
    <br />
    <href="http://blog.csdn.net/feng_sundy/archive/2008/06/19/2566028.aspx" target="_blank"><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/feng_sundy/421506/o_09925c7bcead8c60f683298dacf497a6.jpg" border="0" width="0" height="0" onload="AutoResizeImage(250,250,this)"  alt="200 X 300"/></a><br /><br />
    4.高宽不等比例压缩 (400 X 512),此时高度不变,会自动按高度的比例压缩。
    <br />
    onload="AutoResizeImage(400,512,this)"
    <br />
    <href="http://blog.csdn.net/feng_sundy/archive/2008/06/19/2566028.aspx" target="_blank"><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/feng_sundy/421506/o_09925c7bcead8c60f683298dacf497a6.jpg" border="0" width="0" height="0" onload="AutoResizeImage(400,512,this)"  alt="341 X 512"/></a><br /><br />
    5.高宽不等比例压缩 (300 X 600),此时宽度不变,会自动按宽度的比例压缩。
    <br />
    onload="AutoResizeImage(300,600,this)"
    <br />
    <href="http://blog.csdn.net/feng_sundy/archive/2008/06/19/2566028.aspx" target="_blank"><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/feng_sundy/421506/o_09925c7bcead8c60f683298dacf497a6.jpg" border="0" width="0" height="0" onload="AutoResizeImage(300,600,this)"  alt="300 X 449"/></a><br /><br />
    6.如果图片本来的高度和宽度小于压缩的最大高度和宽度,则不会拉大显示图片(按原图显示)
    <br />
    原图444 x 207,压缩为 500 x 600,将保持原图显示
    <br />
    onload="AutoResizeImage(500,600,this)"
    <br />
    <href="http://blog.csdn.net/feng_sundy/archive/2008/06/19/2566028.aspx" target="_blank"><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/feng_sundy/242776/o_20070410_b7409cd284a0f799a357uePcEFa6ty0X.jpg" border="0" width="0" height="0" onload="AutoResizeImage(500,600,this)"  alt="444 X 207"/></a><br /><br />
    </body>
    </html>

猜你喜欢

转载自blog.csdn.net/laiyuan999/article/details/79132258
今日推荐