GWT-不使用文件上载对话框将文件上载到服务器

GWT-不使用文件上载对话框将文件上载到服务器,gwt,Gwt,我需要从用GWT编写的web应用程序向服务器上传一个文件。复杂的部分是无法显示“文件上载”对话框(由于TabPanel上的空间紧张问题)。因此,单击一个按钮,我需要: 直接打开文件选择,而不使用包含要单击的UploadItem的附加表单来打扰用户 选择文件后立即开始上载 我在GWT中编写了以下代码,以便在单击按钮时打开文件选择对话框: final FileUpload upload=新建FileUpload(); upload.setVisible(false); upload.setNam

我需要从用GWT编写的web应用程序向服务器上传一个文件。复杂的部分是无法显示“文件上载”对话框(由于TabPanel上的空间紧张问题)。因此,单击一个按钮,我需要:

  • 直接打开文件选择,而不使用包含要单击的UploadItem的附加表单来打扰用户
  • 选择文件后立即开始上载
我在GWT中编写了以下代码,以便在单击按钮时打开文件选择对话框:

final FileUpload upload=新建FileUpload();
upload.setVisible(false);
upload.setName(“uploadFormElement”);
面板。添加(上传);
添加(新建按钮(“选择文件”,新建ClickListener(){
public void onClick(小部件pSender){
jsClickUpload(upload.getElement());
MessageBox.showMessage(“所选文件名:+upload.getFilename());
} 
}));
本机void jsClickUpload(元素pElement)/*-{pElement.click();}-*/;
虽然这会在单击按钮时打开“文件选择”对话框,但同时也会显示“文件名”为空的消息框


所以我需要的是,只有在选择文件后,才会显示消息框。我该怎么做?此外,在此之后如何将实际文件上载到服务器(M

以下是一个工作示例:

模块加载()上的公共void{
最终文件上传=新文件上传();
upload.setVisible(false);
upload.setName(“uploadFormElement”);
RootPanel.get().add(上传);
按钮b=新按钮(“选择文件”);
b、 addClickHandler(新的ClickHandler(){
@凌驾
公共作废一次点击(点击事件){
jsClickUpload(upload.getElement());
}
});
upload.addChangeHandler(新的ChangeHandler(){
@凌驾
更改后的公共作废(更改事件){
Window.alert(upload.getFilename());
}
});
RootPanel.get().add(b);
}
本机void jsClickUpload(元素pElement)/*-{
pElement.click();
}-*/;

要上传,您需要一个Servlet来接收上传。我使用这个附加库:您可以在他们的网站上找到所需的所有代码。

不,它不起作用。选择文件后,我无法看到MessageBox。我需要的是,只有在选择文件后,才会触发实际的上传(MessageBox只是一个用于测试的平台持有者,它将被实际的servlet上传代码所取代)。我用一个工作示例替换了答案。使用GWT 2.4.0,此代码对我来说运行得非常好。非常感谢您的帮助,但它对我不起作用。我无法看到窗口。警报。我正在使用GWT 2.3.0,我正在FF browser(最新版本)中测试相同的代码,但我认为这不重要。