老板催着要交工,这边有点儿忙不过来了。要用JS验证:<asp:FileUpload ID="FileUpload1" runat="server" onchange="a(this)" />
这个 a 方法,该怎么写,才能判断 FileUpload1 上传图片的大小?我百度了很久了,没有找到想要的能用的,谢谢!

解决方案 »

  1.   

    /**
    *功能:校验图片格式及大小
    *格式仅限jpeg、gif、jpg文件;大小不得超过setSize(单位是Kb),默认限制为100Kb。
    */
    var imgSize=1024*100; 
    var img=null;
    function checkImg(obj,setSize){
     if(setSize==null||setSize==''){
     }else{
       imgSize=1024*setSize;
     }
      var file = obj;
         if(file.value != ""){
             //检测类型
             var val = file.value;
             if(/^.*?\.(jpg|jpeg|gif|JPG|JPEG|GIF)$/.test(val)){
             }else{
                 alert("只能上传jpg,jpeg或gif格式的图片!");
                 return false;
             }
             //检测大小:
              if(img) img.removeNode(true);
              var img = new Image();
              
              var theSize=0;
              img.onload=function(){
                   theSize = img.fileSize;
              }
              img.src = val;
              if(theSize<=0){
                alert("正在验证图片,请稍候……");
                return false ;
              }
              if(theSize>imgSize){
                   alert("当前图片大小" + Math.round(theSize/1024) + "KB, 超出最大限制" + Math.round(imgSize / 1024) + "KB    !");
                   return false ;
           }
        }
        return true ;
    }本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mzh_2008beijing/archive/2010/01/04/5128057.aspx
      

  2.   

    结合一下后台的代码 ,在config文件配置这个试试
    <httpRuntime executionTimeout="300" maxRequestLength="204800" useFullyQualifiedRedirectUrl="false"/>
      

  3.   


     <script>
            function a(obj) {
                var fso = new ActiveXObject("Scripting.FileSystemObject");            var f1 = fso.GetFile(obj.value);            alert("File last modified: " + f1.Size);        }    </script>
      

  4.   

    要不把文件路径通过AJAX异步去获取大小!
      

  5.   

    <script>
            function a(obj) {
                var fso = new ActiveXObject("Scripting.FileSystemObject");            var f1 = fso.GetFile(obj.value);            alert("File last modified: " + f1.Size);        }    </script>
    我这个刚刚测试了,可以的呀。
      

  6.   


    <!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>
        <title>无标题页</title>
       <script type="text/javascript">
    var img_user=null;
    function notimg()
    {
    alert("您插入的不是图片,请重新选择插入");
    }
    function isimg()
    {
    if(img_user.fileSize/1024)
    {
    alert("您上传的图片大小为:"+img_user.fileSize+",请重新上传照片!");
    }
    }
    function ChkFileSize(obj) {
                var b = false;
                var _size = 0;
                if (obj) {
                    //ie
                    if (window.navigator.userAgent.indexOf("MSIE") >= 1) 
    {
    if(img_user)img_user.removeNode(true);
    img_user=document.createElement("img");
    img_user.attachEvent("onreadystatechange",isimg);
    img_user.attachEvent("onerror",notimg);
    img_user.src=obj.value;
                    }
                    //firefox
                    else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
                        if (obj.files) {
                        alert(obj.files.item(0).fileSize);
                        }
    else {
    b = true
    }
                    }
                }
                return b;
            }
    </script>
    </head>
    <body>
        <input id="File1" type="file" onchange="javascript:ChkFileSize(this)" />
    </body>
    </html>
      

  7.   

    不用ActiveX之类的插件的话,在客户端检测不了
      

  8.   

    一种
    function a(i) {
      var f = new ActiveXObject("Scripting.FileSystemObject");
      var f1 = f.GetFile(i.value);
      alert(f1.Size);
      }
    后台判断Boolean fileOK = false;
            //设置服务器中保存文件的路径
            String path = Server.MapPath("~/UploadFiles/");
            //判断是否选择了文件
            if (FileUpload1.HasFile)
            {
                //返回文件的扩展名
                String fileExtension =
                    System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
                //设置限定的文件类型
                String[] allowedExtensions = 
                { ".txt", ".doc", ".xml", ".jpg" };
                //判断用户选择的文件类型是否受限
                for (int i = 0; i < allowedExtensions.Length; i++)
                {
                    if (fileExtension == allowedExtensions[i])
                    {
                        fileOK = true;
                    }
                }
            }
            //如果文件大于1M,则不允许上传
            if (FileUpload1.PostedFile.ContentLength > 1024000)
            {
                fileOK = false;
            }
            //如果文件类型符合
            if (fileOK)
            {
                try
                {
                    // 将文件保存到指定的文件夹下
                    FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);
                }
                catch 
                {
                  //
                }
            }
            
      

  9.   

    你可以使用 Silverlight,Flash,或者直接在Firefox3.6之后的版本使用浏览器本身的功能files[i].size
    参见http://dotnet.aspx.cc/article/facbb9a7-c9c6-46ad-9591-5ba34ae27e58/read.aspx
      

  10.   

    可以考虑用flash中的办法,在客户端检测
      

  11.   

    js得陪护ACTIVEX插件才能取出大小,之歌方案不现实,我推荐你用AJAX一步上传 中判断
    在服务器端用PostedFile.ContentLength  判断,大雨指定值的话,直接终止上传。
      

  12.   

    你可以这样进行拦截
    http://dotnet.aspx.cc/file/Catch-maxRequestLength-Exceptions-When-Uploading-File-in-ASPNET.aspx也可以上传后删除
    http://dotnet.aspx.cc/article/294cb4ec-1872-4d81-bde3-f9533373c147/read.aspx
      

  13.   

    ie6可以,FF可以. IE7/8/9目前没有好办法