首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JAVASCRIPT获取上传图片体积和尺寸的有关问题(所有的分)

2012-02-07 
JAVASCRIPT获取上传图片体积和尺寸的问题(所有的分)小弟现在有个项目中有个地方有个要求是上传的图片不大

JAVASCRIPT获取上传图片体积和尺寸的问题(所有的分)
小弟现在有个项目中有个地方有个要求是上传的图片不大于90K且尺寸必须等于180*120.如果非JPG图片的话则没有任何限制(当作附件上传)
本来本人对JAVASCRIPT就不是特熟悉,结果翻了很多这样的东西最后拼出来了如下的脚本,但发现在上传图片的时候有时候能正常检测,有时候却不能正常检测.代码如下


<asp:FileUpload   ID= "FileUpload1 "   runat= "server "   onchange= 'javascript:GetImage(this); '   />
上面是页面上部分代码(FORM等没有贴出来,还有一个IMG2用于浏览上传的图片).
下面为脚本
<script   language= "javascript ">      
  function       GetImage(e)      
    {      
                var   ImgObj=new   Image();    
              ImgObj=e;
                var   allow_ext=new   Array( "jpg ", "jpeg ");
                        if((in_array(allow_ext,get_extname(e.value)))   !=-1)
                        {
                                    form1.img2.src=e.value;
                                  if(ImgObj.readyState!= "complete ")
                                  {
                                        setTimeout( "GetImage(e) ",500);
                                        return   false;
                                  }    
                                    if(form1.img2.width!=180   ||   form1.img2.height!=120)
                                    {
                                  alert( "图片尺寸不符合要求(180*120)! ");  
                                    form1.reset();
                                    }  
                                    var   limit=92160;
                                  if(form1.img2.fileSize   > limit)
                                  {
                                        form1.reset();  
                                          alert( "文件超过90千字节限制! ");


                                  }  
                        }  
    }      
 
function   get_extname(s)
{
        var   s   =   new   String(s)
        s   =   s.toLowerCase();
        if   ((s.lastIndexOf( ". ")> -1)   &&((s.length-1)> s.lastIndexOf( ". ")))  
        {                
                return   s.substring(s.lastIndexOf( ". ")+1);
        }
        else
        {
                return   false;
        }        
}    
function   in_array(a,   s)
{
        var   s   =   new   String(s);
        s   =   s.toLowerCase();
        var   a   =   new   String(a);        
        a   =   a.toLowerCase();
        return   ( ", "+a+ ", ").indexOf( ", "+s+ ", ");
}
        </script>


恳请各位给点意见



[解决办法]
估计是这里有问题
if(ImgObj.readyState!= "complete ")
{
setTimeout( "GetImage(e) ",500);
return false;
}

setTimeout( "GetImage(e) ",500); 会报错,
建议不传参数,FileUpload 对象在方法中获得,然后setTimeout改成如下
setTimeout(GetImage, 500)
[解决办法]
<input id= "UploadFile " type= "file " onchange= "changeSrc(this) " name= "fileUp " runat= "server " />
<asp:Button ID= "Button1 " runat= "server " OnClick= "Button1_Click " OnClientClick= "return CanUpLoad(); " Text= "上传 " />
<img id= "fileChecker " alt= "商品图片 " src= "about:blank " style= "display: none;left: 295px; top: 254px; " />
<asp:Label ID= "LabImage " runat= "server " ForeColor= "Purple "> </asp:Label>
<script type= "text/javascript ">
var oFileChecker = document.getElementById( "fileChecker ");
var Upload=false;

function changeSrc(filePicker)
{
oFileChecker.src = filePicker.value;
oFileChecker.style.display= " ";
}

oFileChecker.onreadystatechange = function ()
{
if (oFileChecker.readyState == "complete ")
{
document.getElementById( 'ImageUpLoad1_LabImage ').innerText= " ";
checkSize();
}
}

function checkSize()
{
if (oFileChecker.fileSize > 15360)
{
document.getElementById( 'LabImage ').innerText= "文件过大,请重新选择! ";
Upload=false;
}
else
{


Upload=true;
}
}

function CanUpLoad()
{
if(Upload)
{
var ff=confirm( "选择这张么? ");
return ff;
}
}
</script>
[解决办法]
我是这样处理的。。var img = new Image(); img.src = url; 再去获取图片的大小和尺寸。但是这个在火狐中是不行的。。没有权限。要上传之后在后台判断
[解决办法]
貌似用js检查就是不太好用,我们这边也出现过这个问题。
另外,setTimeout( "GetImage(e) ",500);这句我觉得应该有问题,这个e放在字符串当中,怀疑这个参数是否传过去了,对不对。
个人的理解是上面这句相当于,直接GetImage(e)这样调用,e取window中的属性,或变量。
建议监听图片的onreadystatechange事件试试(Good_Net(花生鱼) 代码中已有,参考下)。

热点排行