1

我正在尝试从 gwt-ext 上传文件而不打开对话框。为此,我创建了一个 FormPanel 并向其中添加了适当的字段。然后做了一个form.submit()。这似乎不起作用。知道为什么吗?代码如下所示。

final FormPanel uploadForm = new FormPanel();
uploadForm.setVisible(false);
uploadForm.setFileUpload(true);
final TextField sourceFile = new TextField("File", "sourceFile");
sourceFile.setVisible(false);
sourceFile.setInputType("file");
sourceFile.setValue("/tmp/test.txt");

final TextField targetFile = new TextField("Upload As", "targetFile");
targetFile.setVisible(false);
targetFile.setValue("different.txt");

uploadForm.add(sourceFile);
uploadForm.add(targetFile);

final String url = GWT.getModuleBaseURL() + "/uploadFile";
uploadForm.getForm().submit(url, null, Connection.POST, null, false);

我用一个简单的 html 表单在服务器端测试了 servlet,它工作正常。只有 GWT-EXT 版本似乎不起作用。

4

2 回答 2

0

我发现了为什么上面的代码不起作用。这里的主要问题是,如果上传表单尚未呈现和/或在用户单击提交按钮后表单已被修改,则由于安全原因,文件上传会被浏览器阻止。如果浏览器确实允许这样的事情,那么系统上的任何文件都可以在用户不知情的情况下轻松上传。

解决上述问题的方法是调出对话框,在提交按钮的事件处理程序和表单监听器的onActionComplete方法中进行上传,进行其他处理。

于 2008-12-12T19:44:42.453 回答
0

没有对话框上传的整个想法对我来说似乎是一个安全漏洞。我可以想象一个应用程序在打开时窃取密码文件,如果只有上述可能的话。

于 2009-06-04T14:18:18.323 回答