Nit*_*eti 2 gwt dialog file-upload
我正在开发一个GWT Web应用程序,用户正在推动更新(如twitter).更新是文本+附件.我希望用户输入更新,可选择点击上传按钮,弹出窗口以浏览文件,然后在完成后点击"发送更新"按钮.文本+附件将存储在mysql中的一行中.文本为ususal 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
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.
免责声明:这是我使用的方法.我可能错过了一些东西,可能还有其他方法我很想了解.
归档时间: |
|
查看次数: |
4109 次 |
最近记录: |