【问题标题】:How to get a multiple value parameter using O'Reilly's multipart form servlet library?如何使用 O'Reilly 的多部分表单 servlet 库获取多值参数?
【发布时间】:2011-08-26 09:12:40
【问题描述】:

我正在使用O'Reilly's multipart form library for Servlets 来处理文件上传。我发现它有用且可行,但我面临一个我无法解决的问题。这是关于多值参数(例如多选)。 我正在解析如下参数:

List<Units> unitsParams = new ArrayList<Units>();
while (mp != null && (part = mp.readNextPart()) != null) {
    if (part.isFile()) {//Es un fichero.
        FilePart filePart = (FilePart) part;
        if (filePart.getContentType().equals("image/jpeg")) {
            InputStream pis = filePart.getInputStream();
            // It's a file, handle it
        }
    } else if (part.isParam()) { // Es un parametro
        // Handle the actual params
        String namePar = part.getName();
        ParamPart paramPart = (ParamPart) part;
        String valorPar = paramPart.getStringValue();
        boolean fin = null == valorPar;
        if (!fin) {
            if (namePar.equals("id")) {
                id = valorPar;
            } else if (namePar.equals("name")) {
                orgName = valorPar;
            } else if (namePar.equals("unitSelect")) {
                unitsParams.add(valorPar);
            }
        }
    }

对于多值参数,我认为它会迭代(发送不同部分)的次数与我发送的参数 unitSelect 的值的数量一样多,但我只能得到一个值。

有人使用过这个库并遇到过这个问题吗?我试图避免更改库,因为文件上传工作正常,并且为少数 servlet 更改代码的重要部分很痛苦。

欢迎提出任何建议。

谢谢。

【问题讨论】:

    标签: html servlets parameters multipartform-data


    【解决方案1】:

    我不使用 O'Reilly multipart/form-data 解析器的原因是 Apache Commons FileUpload 使用更广泛并且仍在积极维护,而且从 Servlet 3.0 开始,您甚至可以使用内置方法,例如 @ 987654324@ 无需任何第三方库。

    但是,在检查了 Javadocs 和示例之后,您似乎最好使用 MultipartRequest 类来收集参数。它提供了getParameter()getParameterValues() 方法。

    MultipartRequest multipartRequest = new MultipartRequest(request, saveDirectory);
    File file = multipartRequest.getFile("file");
    String id = multipartRequest.getParameter("id");
    String name = multipartRequest.getParameter("name");
    String[] unitSelect = multipartRequest.getParameterValues("unitSelect");
    // ...
    

    另见:

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 2020-01-07
      相关资源
      最近更新 更多