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 创建的另一个模块,我应该在其中使用路径)。
我试过的
- 从 FileUpload 获取文件
upload.getElement.getgetChildCount(); ==> equal 0
upload.getFileName(); ==> null
- 我尝试使用 js:
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
}
}-*/;
- 使用DOM:
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);
}
}
我正在使用 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 创建的另一个模块,我应该在其中使用路径)。
我试过的
- 从 FileUpload 获取文件
upload.getElement.getgetChildCount(); ==> equal 0
upload.getFileName(); ==> null
- 我尝试使用 js:
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
}
}-*/;
- 使用DOM:
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);
}
}