GWT - 使用 FileUpload 上传和获取上传的文件

GWT - Upload and get files uploaded with FileUpload

我正在使用 FileUpload class 上传多个文件。由于 我无法选择使用库 (如 gwt-upload 或其他),我创建了 class MultiFileUpload

public class MultiFileUpload extends FileUpload {
    public MultiFileUpload() {
        this.getElement().setAttribute("multiple", "multiple");
        this.setTitle("Select files");
    }
}

我将它添加到我的面板并且可以 select 成功创建多个文件 :

private MultiFileUpload upload = new MultiFileUpload();
upload.getElement().setId("files");
grid.setWidget(2, 1, upload);

我的问题是: 我无法获取每个文件的路径以将其发送到另一个服务(从使用 Jave 企业版 aka jee 创建的另一个模块,我应该在其中使用路径)。

我试过的

upload.getElement.getgetChildCount(); ==> equal 0
upload.getFileName(); ==> null
private static native boolean validateFiles() /*-{
        var filesCount = $wnd.$('input:file')[0].files.length;
        for(i = 0; i<filesCount; i++){
        console.log($wnd.$('input:file')[0].files[i].path) //==> path is undefined
        }
}-*/;
Element e =  DOM.getElementById("files");
e.getgetChildCount(); ==> equal 0

非常感谢任何帮助。

解决方法: 我在 POST 请求中向 servlet 发送文件和所有表单数据:

form.setAction(UPLOAD_ACTION_URL);
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);

然后在我的 servlet 中,我从请求中获取文件路径:

DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);

Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
            FileItem item = iter.next();
            if (item.isFormField()) {
                String fileName = new File(item.getName()).getName();
                File uploadedFile = new File(fileName);
                item.write(uploadedFile);
              }
}