Java获得了muiltipart表单的一部分

时间:2016-02-12 12:33:30

标签: java multipartform-data html-form-post

我有一个公式,其中有4个文件需要上传。 因为我使用OpenCms自动上传文件夹中的所有文件,所以我不需要为自己上传文件。 现在问题:我需要一个enctype="multipart/form-data" Formular,因此软件可以上传它。

现在我无法使用request.getParameter("")读取参数,而是使用FileItems和Iterator列表。 但List<FileItems>我收到[]

也许你可以帮我解决这个问题。这是我的代码的一部分:

private void createNachricht(CmsObject cms, HttpServletRequest request) {
    System.out.println("execute createNachricht...");
    List<CmsProperty> bildprops = new ArrayList<CmsProperty>();
    List<CmsProperty> props = new ArrayList<CmsProperty>();
    Map<String, String> allRequestData = new TreeMap<String, String>();
    try {
        if (ServletFileUpload.isMultipartContent(request)) {
            System.out.println("isMultipartContent");
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload servletFileUpload = new ServletFileUpload(
                    factory);
            @SuppressWarnings("unchecked")
            List<FileItem> fileItemsList = servletFileUpload
                    .parseRequest(request); // returns [] so it's empty...
            Iterator<FileItem> it = fileItemsList.iterator();
            while (it.hasNext()) {
                FileItem fileItemTemp = it.next();
                if (!fileItemTemp.isFormField()) {
                    StringBuilder fileName = new StringBuilder(
                            sanitizeFilename(fileItemTemp.getName()));
                    System.out.println("fileName: " + fileName);
                } else {
                    String name = fileItemTemp.getFieldName();
                    String val = fileItemTemp.getString("utf-8");
                    allRequestData.put(name, val);
                    System.out.println("name: " + name);
                    System.out.println("value: " + val);
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    // more code here...
}

1 个答案:

答案 0 :(得分:0)

文件到达请求流,可以读取一次。我猜你的CMS已经读过这个请求流,所以它现在是空的,ServletFileUpload可以从中读取任何内容。

向CMS咨询文件。请参阅CMS文档,了解如何获取与上传文件一起解析的多部分参数。