声明: 不用IE控件(ActiveXObject)不用 Img属性
最好 使用 Jquery  

解决方案 »

  1.   

    判断上传文件大小,一般上传文件都要在后台判断大小。然后用ajax回调
    在页面无刷新显示上传文件byte即可
      

  2.   

    判断大小可以用flash上传,用flash做一个很小的上传按钮就行了..不过flash的多文件同时上传和html的多file上传有差异
      

  3.   

    参考:http://jonsion.javaeye.com/blog/552921
      

  4.   

    第一种方法是利用IE控件 <html> 
    <input type="file" name="file1" onchange="ShowSize(this.value)"> 
    <script language="JavaScript"> 
    <!-- 
    function ShowSize(files) 

    var fso,f; 
    fso=new ActiveXObject("Scripting.FileSystemObject"); 
    f=fso.GetFile(files); 
    if(f.size>1024*4){
    alert(f.size+" Bytes"); 
    }

    //--> 
    </script> 
    </html>第二种方法是利用IE下,Image对象的属性,如:fileCreatedDate、fileModifiedDate、fileSize、fileUpdatedDate、filters限制:<input type="text" size="4" value="10" name="fileSizeLimit" id="fileSizeLimit"/> K
    <input type="file" name="file1" id="file1" size="40" onchange="changeSrc(this)"/>
    <img src="about:blank" id="fileChecker" alt="test" height="18"/><script type="text/javascript">
    var oFileChecker = document.getElementById("fileChecker");function changeSrc(filePicker)
    {
        oFileChecker.src = filePicker.value;
    }oFileChecker.onreadystatechange = function ()
    {
         if (oFileChecker.readyState == "complete")
         {
            checkSize();
         }
    }function checkSize()
    {
         var limit = document.getElementById("fileSizeLimit").value * 1024;     if (oFileChecker.fileSize > limit)
         {
            alert("too large");
         }
         else
         {
            alert("ok");
         }
    }
    </script>JS实现多个上传附件的FILE文件域代码<style type="text/css"> .file { font: 10pt; color: black; } </style>
    <script language="javascript">
          function addFile() {
               var fileDiv = document.all['fileDiv'];
               var strHtml = '<span><input type="file">&nbsp;&nbsp;<button onclick="removeFile(parentNode);">删除</button><br></span>';
               fileDiv.innerHTML += strHtml;
          }
          
          function removeFile(obj) {
               obj.removeNode(true);
          }
    </script>
    <form enctype="multipart/form-data">
          <div id="fileDiv"></div>
          <a href="javascript:void(addFile());" class="file">添加附件</a>
    </form> 
     
      

  5.   


    1.<input type="file" id="fileText">    
    2.<input type="button" value="检查文件大小" onclick="checkFileChange(document.getElementById('fileText'));">   
    3.  
    4.  
    5.<script type="text/javascript">   
    6.var  Sys = {};   
    7.if(navigator.userAgent.indexOf("MSIE")>0)   
    8.{   
    9.    Sys.ie=true;   
    10.}   
    11.if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)   
    12.{   
    13.    Sys.firefox=true;   
    14.}   
    15.  
    16.function checkFileChange(obj)   
    17.{   
    18.    var filesize = 0;   
    19.       
    20.    if(Sys.firefox)   
    21.    {   
    22.        filesize = obj.files[0].fileSize;   
    23.    }else if(Sys.ie)   
    24.    {   
    25.        var fileobject = new ActiveXObject ("Scripting.FileSystemObject");//获取上传文件的对象   
    26.        var file = fileobject.GetFile (document.getElementById("fileText").value);//获取上传的文件   
    27.        var filesize = file.Size;//文件大小   
    28.    }   
    29.    alert(filesize);   
    30.}   
    31.</script> 
      

  6.   

    ActiveXObject会弹出安全提示
    Img属性 浏览器不兼容只能通过ajax向服务器段发送请求,然后就像在服务器端直接获取大小就怎么来返回给客户端就OK
      

  7.   

    客户端,用flash
    或者传给服务器端
      

  8.   

    http://www.uploadify.com/documentation/
    用这个软件,相当好用.是JQ+Flash实现文件上传的,可以获取上传文件的各种详细信息.
      

  9.   

    一句话:纯JS不可能实现。安全设置不允许。JS不可以肆无忌惮的读取用户本地信息。这样会造成隐私泄露。
      

  10.   

    使用 SWFUpload (开源项目) 上传文件具体使用方法参见 http://xpz.javaeye.com/blog/126828
    说的还是比较详细的,如果还是看不懂,可以给你个我自己写的例子(C#)的
    留下mail
      

  11.   


    参考cloudgamer的文件预览
    要做到浏览器兼容应该是必须先传到服务器上的
      

  12.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
    <title>Insert title here</title>
    <script type="text/javascript">
    var isIE = /msie/i.test(navigator.userAgent) && !window.opera; var sizeLabel = ["B", "KB", "MB", "GB"];

    function fileChange(target) { var fileSize = 0;

    if (isIE && !target.files) {
    var filePath = target.value;
    var fileSystem = new ActiveXObject("Scripting.FileSystemObject");   
    var file = fileSystem.GetFile (filePath);
    fileSize = file.Size;
    } else {
    fileSize = target.files[0].size;
    }
    displayFileSize(fileSize);
    } function displayFileSize(size) {
    var fileSize = document.getElementById("fileSize");
    fileSize.innerHTML = calFileSize(size);
    } function calFileSize(size) {
    for (var index = 0; index < sizeLabel.length; index++) {

    if (size < 1024) {
    return round(size, 2) + sizeLabel[index];
    }

    size = size / 1024;
    } return round(size, 2) + sizeLabel[index];
    } function round(number, count) {
    return Math.round(number * Math.pow(10, count)) / Math.pow(10, count);
    }

    </script>
    </head>
    <body>
    <div>
    <input type="file" onchange="fileChange(this);">
    </div>
    <div id="fileSize">
    </div>

    </body>
    </html>全浏览器兼容,其中files[0].size是利用了html5的内容。已经在IE6,IE7,Firefox3.5,Chrome5上测试通过
      

  13.   

    googleDoc中的预览上传文件可以看到大小。
    原理为,
    1。如果是最新的浏览器。(有.files属性)就直接取得
    2。如果是老土的浏览器。用Flash返回,如果没有Flash,考虑用applet。如果要做的简单点,上面的代码已经完全满足了
      

  14.   

    我用jQuery+Flex想怎么玩就怎么玩,只是我懒得开源,,,
      

  15.   

    用低级办法,用byte包接收上传文件,接收完之后判断,byte的长度。。
      

  16.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-31j"> <title>Insert title here</title> <script type="text/javascript">  var isIE = /msie/i.test(navigator.userAgent) && !window.opera; var sizeLabel = ["B", "KB", "MB", "GB"]; function fileChange(target) { var fileSize = 0; if (isIE && !target.files) { var filePath = target.value; var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); var file = fileSystem.GetFile (filePath); fileSize = file.Size; } else { fileSize = target.files[0].size; } displayFileSize(fileSize); } function displayFileSize(size) { var fileSize = document.getElementById("fileSize"); fileSize.innerHTML = calFileSize(size); } function calFileSize(size) { for (var index = 0; index < sizeLabel.length; index++) { if (size < 1024) { return round(size, 2) + sizeLabel[index]; } size = size / 1024; } return round(size, 2) + sizeLabel[index]; } function round(number, count) { return Math.round(number * Math.pow(10, count)) / Math.pow(10, count); } </script> </head> <body>  <div>  <input type="file" onchange="fileChange(this);">  </div>  <div id="fileSize">  </div>  </body> </html>
      

  17.   

    不行,除非你在客户端使用ACTIVEX控件。
      

  18.   

    安全性上不允许在客户端使用FSO,也不能象以前那样方便地获取FILE控件文件名。
    从性能上,你用AJAX,比上传到服务器验证大小多了一道手续。
    所以最简单的方法,就是在页面上明确提示上传文件的最大大小。然后上传后判断,超出大小的责任由用户自己负责,毕竟他在选择文件时是可以看到文件大小的。
      

  19.   

    在firefox3.6+, 可以在客户端得到文件的大小:<input type="file" id="input" onchange="handleFiles(this.files)" />function handleFiles(files) {
      for (var i = 0; i < files.length; i++) {
        var file = files[i];
        alert(file.name + ' ' + file.size + ' ' + file.type);
      }
    }来源:https://developer.mozilla.org/en/Using_files_from_web_applications
      

  20.   

    遇上这样的问题了,本想着通过ajax向服务器段发送请求,然后就像在服务器端直接获取大小返回给客户端,可是
    在服务端判断超过大小,返回客户端的时候,这个时候文件是已经上传到服务器了,时间是非常长的,还是没达到目的,怎么办啊