我曾尝试在GXT中制作一个表格来上传文件,但我在网上看到了更多示例,但我无法使它通过一个简单的FileUploadField来在本地保存文件。
Cde片段:
formPanel = new FormPanel();
formPanel.setBodyBorder(false);
formPanel.setHeaderVisible(false);
formPanel.setAction(GWT.getModuleBaseURL() + "fileUpload");
formPanel.setEncoding(Encoding.MULTIPART);
formPanel.setMethod(Method.POST);
formPanel.setButtonAlign(HorizontalAlignment.CENTER);
formPanel.setHeaderVisible(true);
fileUploadField = new FileUploadField();
fileUploadField.setName("fileName");
fileUploadField.setAllowBlank(false);
fileUploadField.setFieldLabel("Archivo");
fileUploadField.addListener(Events.OnChange, new Listener<BaseEvent>() {
public void handleEvent(BaseEvent BaseEvent) {
aSubmitButton.setEnabled(true);
}
});
aSubmitButton = new Button("OK");
aSubmitButton.setEnabled(false);
aSubmitButton.setId("submit_button");
aSubmitButton.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent inButtonEvent) {
formPanel.submit();
}
});
上面的代码是FormPanel和FileUploadField的声明。
我们使用gwtupload-0.6.3-compat.jar库完成这项工作。
[基本上,这个想法是在服务器端,您需要创建一个servlet,它将接受您上传的文件。提到的库提供了UploadAction servlet扩展,以简化此操作。
在客户端,您可以使用gwtupload组件之一。例如,我们使用MultiUploader。那实际上是几行代码。主代码在侦听器中:
private IUploader.OnFinishUploaderHandler onFinishUploaderHandler = new IUploader.OnFinishUploaderHandler() {
public void onFinish(IUploader uploader) {
if (uploader.getStatus() == Status.SUCCESS) {
// What you want to do when file is uploaded.
}
}
};
其余部分由组件负责。由于该库是用于GWT的,因此它附带了源代码,因此您可以在后台查看其功能并阅读代码中的大量注释。
当然可以免费使用。