文件类型的判断,可用JS截取最后的几个字符来进行(如果用户改下扩展名就不行了),文件大小JS不能获得,需要进行提交

解决方案 »

  1.   

    判断文件类型<input type="file" onchange="check(this)">
    <script language=javascript>
    function check(obj)
    {
    var str=obj.value
    re=/\.exe$/i
    if(re.test(str)){
    alert("输入错误")
    obj.select()
    document.execCommand("delete")
    }

    }
    </script>判断文件大小在浏览器安全级别不变的情况下,除了图片之外只能在服务器端才可以做,具体方法如下
    http://blog.csdn.net/hbhbhbhbhb1021/archive/2007/11/16/1888309.aspx
      

  2.   

    <%  
      dim   a  
      fname="1.txt"  
      fpath=Server.MapPath(".")  
      filepath=fPath   &   "\"   &   fname  
      set   fso=server.createobject("scripting.filesystemobject")  
      set   a=fso.getfile(filepath)   
    response.write   "文件的大小为:"   &   a.size   &   "<br>"  
    %〉
      

  3.   

    把楼上的在客户端运行即可!
    一般都可以得到执行的 ,除非进制了 Active 交互
      

  4.   

    5楼的方法试了,提示  set       a=fso.getfile(filepath)  这一行Microsoft VBScript 运行时错误,文件未找到
      

  5.   

    <%    
        dim       a    
        fname="1.txt"    
        fpath=Server.MapPath(".")    
        filepath=fPath       &       "\"       &       fname    
        set       fso=server.createobject("scripting.filesystemobject")    
        set       a=fso.getfile(filepath)      
    response.write       "文件的大小为:"       &       a.size       &       " <br> "    
    %>
    是全角改过来,然后有提示说明你的路径有问题,我试过没有问题的,你再研究一下,不行就输入
    绝对路径看看
      

  6.   

    这个fname="1.txt" 中的1.txt能否用变量来代替?即我的文件域是这样的:<input name="e_acces" type=FILE id="e_acces" size="30" maxlength="30"> 怎么样将我文件域中的文件写成变量付给fname用?麻烦xiaolei1982帮忙写下
      

  7.   

    下面的办法可以判断文件大小,但是需要权限,浏览器会提示的...........
    <HTML>
    <HEAD>
    <SCRIPT>
    function getImageDimension (imgURL, loadHandler) {
      var img = new Image();
      img.onload = loadHandler;
      if (document.layers 
          && location.protocol.toLowerCase() != 'file:' 
          && navigator.javaEnabled())
        netscape.security.PrivilegeManager.enablePrivilege(
          'UniversalFileRead'
        );
      img.src = imgURL;
    }
    function getFileSize (fileName) {
      if (document.layers) {
        if (navigator.javaEnabled()) {
          var file = new java.io.File(fileName);
          if (location.protocol.toLowerCase() != 'file:')
            netscape.security.PrivilegeManager.enablePrivilege(
            'UniversalFileRead'
            );
          return file.length();
        }
        else return -1;
      }
      else if (document.all) {
        window.oldOnError = window.onerror;
        window.onerror = function (err) {
          if (err.indexOf('utomation') != -1) {
            alert('file access not possible');
            return true;
          }
          else 
            return false;
        };
        var fso = new ActiveXObject('Scripting.FileSystemObject');
        var file = fso.GetFile(fileName);
        window.onerror = window.oldOnError;
        return file.Size;
      }
    }
    function showImageDimensions () {
      alert(this.width + 'x' + this.height);
    }
    </SCRIPT>
    <SCRIPT>
    function checkImageDimensions (fileName) {
      var imgURL = 'file:///' + fileName;
      getImageDimension(imgURL, showImageDimensions);
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    <FORM NAME="formName">
    <INPUT TYPE="file" NAME="fileName">
    <BR>
    <INPUT TYPE="button" VALUE="check file size"
           ONCLICK="alert(getFileSize(this.form.fileName.value))"
    >
    <BR>
    <INPUT TYPE="button" VALUE="check image dimensions"
           ONCLICK="checkImageDimensions(this.form.fileName.value)"
    >
    </FORM>
    </BODY>
    </HTML>
      

  8.   

    to:showbo 方法试过了,可以弹出文件大小,但是是要点击按钮实现的,能不能改成选择文件后就弹出提示呢?我改了下不行,麻烦帮忙给改下可以吗?
      

  9.   

    楼主的想法在实际中可行性很低,判断后缀可以通过简单的截取判断,但文件大小就要用客户端的FSO才能实现,也就是showbo的方法,你把showbo的代码在file域的onchange调用就可以了。但有一个问题是,用客户端的FSO必须用户同意打开ActiveX的安全提示,基本上没人愿意随便开。最好还是在提交后的服务器端作判断。
      

  10.   

    <INPUT TYPE="file" NAME="fileName" onchange="alert(getFileSize(this.value))">
      

  11.   

    谢谢大家了,暂时先用showbo的方法了,现在主要是在本地机调试的。