file-upload - GWT - 使用 FileUpload 上传和获取文件
问题描述
我正在使用 FileUpload 类来上传多个文件。由于我没有选择使用库(如 gwt-upload 或其他),我创建了类MultiFileUpload:
public class MultiFileUpload extends FileUpload {
public MultiFileUpload() {
this.getElement().setAttribute("multiple", "multiple");
this.setTitle("Select files");
}
}
我将它添加到我的面板中,并且可以成功选择多个文件:
private MultiFileUpload upload = new MultiFileUpload();
upload.getElement().setId("files");
grid.setWidget(2, 1, upload);
我的问题是: 我无法获取每个文件的路径以将其发送到另一个服务(来自另一个使用 Jave Entreprise Edition 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);
}
}
推荐阅读
- css-selectors - 如何获取组最后一列元素
- firebase - 将 firebase 分析插件添加到具有 phonegap-plugin-push(firebase 云消息传递)的现有应用程序的问题
- java - 方法调用如何作为条件工作?用于 Java 中的递归回溯
- scala - 每当使用 scala 宏更改变量时打印字符串
- r - 获取字符串中的最小数字
- android - 当 CMAKE_BUILD_TYPE 设置为除调试之外的任何内容时,无法加载 libnative-activity.so
- java - Spring Tool Suite Jar 损坏
- c# - 如何遍历 DataGrid 项目并将它们插入数据库 WPF C#
- mysql - 根据 IN 条件应用 mysql 限制
- ios - UILabel 在界面构建器和模拟器中的显示方式不同