繁体   English   中英

文件上传使用 GWT 和一个对话框来浏览文件

[英]File Upload using GWT with a Dialog box to browse to the File

我正在开发一个 GWT web 应用程序,用户正在推送更新(类似于 twitter)。 更新是文本+附件。 我希望用户输入更新,可选择点击上传按钮,弹出浏览文件,然后当他们完成后最后点击“发送更新”按钮。 文本+附件将存储在 mysql 中的一行中。 文本为通常的 varchar,文件为 blob。 文件大小会很小。

我目前对如何实现这一目标一无所知。 查看 API 和谷歌搜索,我发现正在使用“FileUpload”小部件。 文档说它曾经与 FormPanel 一起使用。 我不确定我是否真的得到了全部内容以及如何在我的情况下应用它。

我该如何解决我的问题?

浏览器上传文件的典型方式是使用 input 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

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

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

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

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

这种方法有替代方案。 您可以使用 Flash,您可以使用 Adobe AIR,可能还有其他方法。 在不同的库中有这些方法的小部件。 检查此站点: http://google.wikia.com/wiki/Google_Web_Toolkit

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM