2010-08-10 46 views
0

我使用jquery iframe插件将HTML喷射到iframe中。其中包括: 包含:在iframe中推送“选择文件”按钮(使用jquery)

<form id="update" action="dummy" method="POST" enctype="multipart/form-data"> 
    <div><input type="file" name="data" id="update_data"></div> 
</form> 

然后我运行以下函数。在Chrome调试器中看到乐趣,我可以看到 ,我成功锁定到框架,窗体和输入字段。但 选取器不会弹出,并且表单不会提交给(JAX-RS)服务。

function update_file(file) { 
    var iframe = $('#new_file_iframe'); 
    var delform = iframe.contents().find("#update"); 
    var fileinput = iframe.contents().find("#update_data"); 
    // URLencoding? 
    delform.attr("action", "/rex-ws/service/jape/update-file/" + file); 
    fileinput.click(); 
    delform.submit(); 
} 

也许click不是正确的设置它?

回答

1

这是一个安全问题。浏览器对编程上的文件上传可能会有些吝啬。

我很确定运行fileinput.click()出于这个原因是不可能的。

基于Flash的上传器如UploadifySWFUpload在这里有更多的自由。我认为可以用它们以编程方式打开文件选择器。但是,使用这些上传者之一需要一些工作。

+1

当前日期更新... fileinput.click()适用于FF和IE,但不适用于Chrome。 – 2012-10-22 16:32:15

1

我已经在一个项目中完成了这项工作,我会告诉你这有点棘手。

什么你基本上(嗯,至少对我为什么这样做)做的是:

  • 有一个输入[文件],您的主页
  • 在您的上传操作(即在一个点击事件主页)创建和 IFRAME与窗体和重复你的 输入[文件],并将其连接到您的 新创建的iframe的形式
  • 提交表单中的iframe与 ajaxSubmit会(jQuery插件)

如果你想我可以在这里添加代码(但它约120行)。

..fredrik

编辑:

如果你在设计一个HTML5的网站,看看新的输入文件API。 https://developer.mozilla.org/en/using_files_from_web_applications

+0

我看不到这是如何自动打开文件选择对话框的。此外,我很确定文件输入将无法通过仍然选择的文件传输到iframe中。你确定这有效吗? – 2010-08-10 18:10:32

+0

那么弹出窗口不会自动打开。这将是一个用户操作。这只是解决同样问题的另一种方法(不要认为这是问题?!)。但是,输入将会存活。由于输入只是一个DOM元素,其属性可以在提交表单之前进行操作。花了一段时间才算出来,但总之它起作用了。 – fredrik 2010-08-10 19:40:29

+0

但不是自动点击()OP的点? (虽然我可能是错的) – 2010-08-10 19:43:16