小弟有一段代码,检测图片上传前格式及大小是否符合规范,在IE下没有问题,可火狐下就不能使用了,而且火狐报错也没有指出错误所在,哪位大哥帮忙给看看吧,小弟谢了先。<!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=gb2312" />
<title>无标题文档</title>
</head><body>
<script type="text/javascript">
var imgSize = 1024 * 100; //最大100K
function checkImgSize(){
    var file = document.getElementById("fuPhoto");
    if(file.value != ""){
        
        //检测类型
        var val = file.value;
        if(/^.*?\.(gif|png|jpg|JPG|JPEG|jpeg|bmp)$/.test(val)){
        }else{
            alert("只能上传gif, png, jpg, bmp格式的图片");
            return false;
        }
        
        var img = new Image();
        img.onreadystatechange = function(){
            if(img.readyState == "complete"){
                if(img.fileSize <=0 || img.fileSize > imgSize){
                    alert("当前文件大小" + img.fileSize / 1024 + "KB, 超出最大限制 " + imgSize / 1024 + "KB");
                }else{
                    alert("OK");
                    return true;
                }
            }
        }
        
        img.src = val;
    }else{
        alert("请选择上传的文件!");
        return false;
    }
}
</script>
<input type="file" id="fuPhoto" />
<input type="submit" value="上传" onclick="return checkImgSize()" />
</body>
</html>

解决方案 »

  1.   

     img.onreadystatechange = function(){ }
     在IE 下有效果,到firefox 下不支持这个了. 
    IE,firefox 下Image 都支持onload 
    所以你可以替换成 img.onload=function(){}
    在还有fileSize 只对IE 有效,firefox 下无效的
      

  2.   

     img.onreadystatechange = function(){ }
     在IE 下有效果,到firefox 下不支持这个了. 
    IE,firefox 下Image 都支持onload 
    所以你可以替换成 img.onload=function(){}
    在还有fileSize 只对IE 有效,firefox 下无效的
      

  3.   

    最重要的不是这些,是firefox 不允许访问路径.
      

  4.   

    firefox 不允许访问本地路径.
      

  5.   

    哪位大哥有好的代码啊,分享一下吧,JS前台的啊,呵呵。控制图片上传大小的,一定要IE火狐都兼容的啊,小弟快弟被弄死了,大哥帮帮忙吧……
      

  6.   

    http://space.cnblogs.com/group/topic/6568/###
    参考一下
      

  7.   

    对AJAX有兴趣的朋友,欢迎加入群78514534
    对ASP.NET和C#有兴趣的朋友,欢迎加入67226009
      

  8.   

    试了一下,IE 7&8都可以,就是火狐不能检测文件大小
    关注
      

  9.   

    安全问题,FF无法获取本地文件信息,在<2.0版本中做出了控制
      

  10.   

    这个51aspx上解决了,不过我没看明白,你自己下了看下:
    http://www.51aspx.com/CV/163FileUpload/
      

  11.   

             var myImage =new Image();
    myImage.onload = function(){
                     alert(fileSize);
                    if(myImage.width>0 && myImage.height>0){
                        if (myImage.fileSize > 2048*1024){
                            alert("照片不得大于2M");
                        }else{
                           //上传操作
                        }
                    }
                }
                if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){   
                  //Firefox浏览器 
                    myImage.src=document.forms[0].imgUpload.files[0].getAsDataURL();
                   //其中forms是指文件所在的表单,而imgUpload是指type='file'的id号,由此可以得到路径。
                } else{
                    myImage.src = Dom.get("imgUpload").value;
                }但是这里面有潜在的两个问题,就是本地文件路径的中文问题,还有一个就是在fierefox中fileSize是无效的,但是我试了GetFileSize也是无效的,这两个问题还在解决中。
      

  12.   

    jsp部分代码:
    <div class="linebox">
    <form method="post" name="formImage" enctype="multipart/form-data" target="hidden_frame"> 
    <span class="lblLabel">图片上传:</span>
    <input  type="file" class="imgUpload"  name="imgUpload" id="imgUpload" title="浏览" />      
       <input type="button"  id="btnUpload" onclick="uploadImage();" value="上  传"/>
       <input type="button"  id="btnDelete" onclick="deleteImage();" value="删  除"/>
       </form>
    </div>js部门代码:
    var myImage =new Image();
    myImage.onload = function(){
                     if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
                       fileSize=Dom.get("imgUpload").files[0].fileSize;  
                     }else{
                        fileSize=myImage.fileSize
                     }
                    if(myImage.width>0 && myImage.height>0){
                        if (fileSize > 2048*1024){
                            alert("照片不得大于2M");
                        }else{
                           //上传
                        }
                    }
                }
                if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){   
                  //Firefox浏览器 
                    myImage.src=document.forms[0].imgUpload.files[0].getAsDataURL();
                } else{
                    myImage.src = Dom.get("imgUpload").value;
                }
    注意点:1、 myImage.src必须写在onload方法的后面。
                  2、document.forms[0].imgUpload.files[0].getAsDataURL()这个路径不会有问题,即使路径带有中文也可以解决。