gwt - 使用 GWT 进行文件上传,并通过对话框浏览到文件

标签 gwt file-upload dialog

我正在开发一个 GWT Web 应用程序,用户可以在其中推送更新(例如 Twitter)。更新内容为正文+附件。我希望用户输入更新,可以选择点击上传按钮,弹出窗口浏览文件,然后在完成后最终点击“发送更新”按钮。文本+附件将在mysql中存储在一行中。文本为通常的 varchar,文件为 blob。文件大小会很小。

我目前不知道如何实现这一目标。通过查看 API 和谷歌搜索,我发现正在使用“FileUpload”小部件。文档说它用于与 FormPanel 一起使用。我不确定我是否真的掌握了全部内容以及如何将其应用到我的案例中。

我该如何解决我的问题?

最佳答案

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

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

关于gwt - 使用 GWT 进行文件上传,并通过对话框浏览到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260692/

相关文章:

android - 在 Android 的 View 中打开带有文本输入的对话框

r - 在 R 中设计对话框

wpf - 使用 WPF 模拟 Vista 通知图标对话框

java - 如何在 GWT 中使用外部服务器端 jar?

security - 更多 GWT 和 Tomcat 6 安全问题 (windows)

c# - 使用 asp.net mvc 3 将文件上传到文件夹时访问被拒绝?

ajax - 使用 Django 文件上传

javascript - Angular 文件上传拖放区不起作用

java - 通过 GWT-RPC 上传文件?

eclipse - GWT 托管模式非常慢