我正在尝试从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版本似乎不起作用。
发布于 2008-12-12 19:44:42
我发现了上面这段代码不工作的原因。这里的主要问题是,如果上传表单尚未呈现和/或在用户单击提交按钮后表单已被修改,则由于安全原因,浏览器会阻止文件上传。如果浏览器确实允许这样的事情,那么系统上的任何文件都可以在用户不知情的情况下轻松上载。
上述问题的解决方案是打开对话框,在submit按钮的事件处理程序中执行upload,在表单侦听器的onActionComplete方法中执行任何其他处理。
发布于 2009-06-04 14:18:18
在我看来,在没有对话框的情况下上传的整个想法是一个安全漏洞。我可以想象一个应用程序在打开时窃取密码文件,如果上面的情况是可能的话。
https://stackoverflow.com/questions/344580
复制相似问题