此代码不起作用(它与<input type =“file”/>有关)

时间:2009-08-20 07:21:07

标签: jquery file-io

此代码应在IE 中运行,但事实并非如此。 (请不要在Firefox中测试它,因为我不会在其中使用这种方法。) 我得到了触发的开放式对话,但我现在想要的是在用户进行选择时在跨度内显示附加文件的名称。有什么帮助吗?

<html>
<head>
  <title>example</title>    
  <script type="text/javascript" src="../js/jquery.js"></script>
  <script type="text/javascript">  
        $(document).ready( function(){            
      $("#attach").after("<input id='fakeAttach' type='button' value='attach a file' />");      
      $("#fakeAttach").click(function() {            
        $("#attach").click();        
        $("#maxSize").after("<div id='temporary'><span id='attachedFile'></span><input id='remove' type='button' value='remove' /></div>");        
        $('#attach').change(function(){
          $("#fakeAttach").attr("disabled","disabled");          
          $("#attachedFile").html($(this).val());
        });        
        $("#remove").click(function(e){
          e.preventDefault();
          $("#attach").replaceWith($("#attach").clone());
          $("#fakeAttach").attr("disabled","");
          $("#temporary").remove();
        });
      })
    }); 
  </script> 
</head>
<body>
  <input id="attach" type="file" /><span id="maxSize">(less than 1MB)</span>    
</body>
</html>

2 个答案:

答案 0 :(得分:4)

出于安全原因,您无法从JavaScript访问input = file元素。 JavaScript不允许读取用户驱动器上的文件,而type = file输入允许您执行此操作。

如果您允许人们使用javascript访问文件输入,则无法阻止他们复制密码文件并进行黑客攻击。

我发现这个article描述了JavaScript安全性

答案 1 :(得分:0)

您无法通过javascript调用文件上传。我知道,你应该能够,哦。有一个解决方案 - 使用不透明度:0来“隐藏”文件输入,在其下面添加一些东西,所以看起来你正在点击其他内容。

PPK shows you how do to it and goes through all the ins and outs on quicks blog