【问题标题】:gwt fileuploadgwt 文件上传
【发布时间】:2009-03-10 23:18:11
【问题描述】:

我想触发对隐藏 FileUpload 小部件上的浏览按钮的点击。 以下代码在 IE 6+ 上运行良好,但在 FireFox 中无法运行。

final FileUpload upload = new FileUpload(); 

upload.setVisible(false);
upload.setName("uploadFormElement"); 
panel.add(upload);

panel.add( new Button("Select File", new ClickListener()
{ public void onClick(Widget pSender) 
{ jsClickUpload( upload.getElement() ); } }));

native void jsClickUpload( Element pElement ) /*-{ pElement.click(); }-*/; 

如何在 FireFox(可能还有其他浏览器)中实现相同的功能?

【问题讨论】:

    标签: gwt file-upload


    【解决方案1】:

    解决方案可以在这里阅读:

    http://www.quirksmode.org/dom/inputfile.html

    在最后一段中:

    click() 方法允许您 模拟点击表单域。 复选框被切换,收音机 被选中,以此类推。很遗憾 Mozilla 和 Opera 没有添加这个 文件上传字段的方法。我想知道 为什么,添加它并不是真正的 安全风险,因为最坏的可能 发生的是文件选择 弹出窗口。

    【讨论】:

    • 文件弹出窗口是一个模态对话框,因此它可用于发送垃圾邮件并对用户造成 DoS 攻击 - 想象一个无法关闭的对话框!
    • 此外,恶意脚本可能会在精心选择的时间触发浏览对话框,导致用户将文件发送到预期之外的地方。还值得注意的是,从 Flash 10 开始,这在 Flash 中不再可能。
    【解决方案2】:

    你试过直接调用 onClick() 方法吗?

    【讨论】:

    • GWT 中的 FileUpload 小部件没有点击方法,所以你必须使用内联原生 javascript 来完成。
    【解决方案3】:

    click方法目前正在FF 4中实现。正在讨论将实现哪些安全规则,听起来它类似于Window.open,并且必须是用户操作的直接结果而不是计时器或负载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 2013-04-10
      • 2023-04-09
      • 2017-10-06
      相关资源
      最近更新 更多