公司现在做的项目中有一个需求是要在用户点击上传时弹出的对话框中锁死可上传的文件类型,页面是用PHP写的,嵌在软件里面,内置的解析内核是Webkit2.0,文件上传就一个input控件,accept属性没有任何效果,经理要求用JS来控制,本人入职才三天哟,求高人指教
默认效果如图:
下面是项目需求效果
本人刚从学校出来,入职才三天,菜鸟一枚,请各位高人救命,在线等哟。

解决方案 »

  1.   

    取出file控件中的value值,分析后缀
      

  2.   

    你不能显示file弹出框的文件类型的.
      

  3.   

    表面的方法就是file的value,根据value字符串的文件后缀判断类型,但是这个文件如果是其他类型修改后缀后得来的,那js是无法判断这个文件的真实类型,只能通过php部分判断
      

  4.   

    文件后缀是可以伪造的,php要做这个事情都不是很容易。
    再加上你是webkit引擎,非ie解析引擎不可以和windows系统交互,读取不了文件。
    你能做的估计只能根据文件后缀做些简单判定,但是如何读取file表单的value,不同浏览器有不同做法
    http://www.w3help.org/zh-cn/causes/HF1010
    这篇文章不错,后面提到改成flash表单提交,比如swfupload,会简单很多。
      

  5.   

    js判断上传文件类型 格式 扩展名(后缀名)本文提供一款经典的利用js判断上传文件类型 格式 扩展名(后缀名),它可以判断用户上传的文件是图片文件还是其它格式的文件,判断原理是获取要上传文件名,然后以"."分开,再判断文件后缀名是不是我们所定义的。<!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>js判断上传文件类型 格式 扩展名(后缀名)</title>
    <script language="网页特效">
    function isvalidatefile(obj){ 
        var extend = form1.file.value.substring(form1.file.value.lastindexof(".")+1); 
        if(extend==""){ 
        }else{ 
    if(!(extend=="xls"||extend=="doc")){ 
       alert("请上传后缀名为xls或doc的文件!"); 
       var nf = obj.clonenode(true); 
                nf.value=''; 
                obj.parentnode.replacechild(nf, obj); 
       return false; 

        } 
         return true; 

    </script>
    </head><body>
    <form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">
      <label for="filefield"></label>
      <input type="file" name="file" id="file" />
      <input type="button" name="button" id="button" value="检测上传文件类型" onclick="isvalidatefile('file');" />
    </form>
    </body>
    </html>
      

  6.   

    谢谢大家了,JQ 的UPLOADER我有想到啊,但那个流览器上根本没办法加载FLASH