0

我尝试在 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的声明。

4

1 回答 1

0

我们使用 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 的,因此它带有源代码,因此您可以看到它在幕后所做的事情并阅读代码中的大量注释。

当然免费使用。

于 2013-02-06T16:10:38.573 回答