使用GWT使用对话框上传文件以浏览到文件

Nit*_*eti 2 gwt dialog file-upload

我正在开发一个GWT Web应用程序,用户正在推动更新(如twitter).更新是文本+附件.我希望用户输入更新,可选择点击上传按钮,弹出窗口以浏览文件,然后在完成后点击"发送更新"按钮.文本+附件将存储在mysql中的一行中.文本为ususal varchar,文件为blob.文件大小很小.

我目前对如何实现这一点毫无头绪.查看API和谷歌搜索我发现正在使用"FileUpload"小部件.文档说它曾用于与FormPanel一起使用.我不确定我是否真的得到了所有东西,我如何在我的情况下应用它.

我怎样才能解决我的问题?

Ale*_*man 5

浏览器上传文件的典型方法是使用输入type='file'表单字段.没有表单就无法使用AJAX上传文件.至少我找不到任何东西.我认为,这是一项安全措施.

因此,要使文件上载可用,您必须提供带有file输入的表单.表格必须通过常规请求提交,而不是AJAX.

所以你必须定义FormPanel并添加FileUpload它.例:

final FormPanel form = new FormPanel();
form.setAction("my.action");
// Because we're going to add a FileUpload widget, we'll need to set the
// form to use the POST method, and multipart MIME encoding.
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
// Create a FileUpload widget.
fileUpload = new FileUpload();
fileUpload.setName("fileUpload");
form.add(fileUpload);
// Add other components to form
Run Code Online (Sandbox Code Playgroud)

其他组件将包括用户文本输入.可能有不同处理方式的选项,但我认为最好是通过相同的表单提交来处理它们.

现在,您必须添加一些内容来触发表单提交.

submitButton = new Button("Upload", new ClickHandler() {
    public void onClick(ClickEvent event) {               
        form.submit();
    }
});
formPanel.add(submitButton);
Run Code Online (Sandbox Code Playgroud)

最后,您必须处理上传.您可以通过多种方式执行此操作,但必须是常规请求处理,而不是通过AJAX或GWT.我个人喜欢使用Spring MVC.但是你可以使用你选择的框架.我不打算在此详述.如果您愿意,可以编写Perl脚本.

这种方法有其他选择.您可以使用Flash,您可以使用Adobe AIR,也可能有其他方法.在不同的库中有这些方法的小部件.请访问以下网站:http://google.wikia.com/wiki/Google_Web_Toolkit.

免责声明:这是我使用的方法.我可能错过了一些东西,可能还有其他方法我很想了解.