File upload gwt外部文件上载

File upload gwt外部文件上载,file-upload,gwt-ext,File Upload,Gwt Ext,我试图在不打开对话框的情况下从gwt ext上传文件。为此,我创建了一个FormPanel并添加了相应的字段。然后做了一个表单。submit()。这似乎不起作用。知道为什么吗?代码如下所示 final FormPanel uploadForm = new FormPanel(); uploadForm.setVisible(false); uploadForm.setFileUpload(true); final TextField sourceFile = new TextField("Fil

我试图在不打开对话框的情况下从gwt ext上传文件。为此,我创建了一个FormPanel并添加了相应的字段。然后做了一个表单。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版本似乎不起作用。

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


上述问题的解决方案是打开对话框,在事件处理程序中为submit按钮执行上载,并在表单侦听器的onActionComplete方法中执行任何其他处理。

在我看来,不使用对话框进行上载的整个想法就像是一个安全漏洞。我可以想象一个应用程序在任何时候打开时都会窃取密码文件,只要上述操作是可能的。

这样做的动机是在后台上传时保持窗口处于活动状态(如flickr照片上传)。我找到了一个解决潜在问题的不同解决方案,这样我就不必进行后台文件上传。你能分享你找到的解决方案吗?