【问题标题】:Read multiple files from HttpServletRequest从 HttpServletRequest 读取多个文件
【发布时间】:2016-11-23 13:49:11
【问题描述】:

我收到一个包含 2 个以上文件的请求 (HttpServletRequest req)。 我这样做是为了从请求中获取文件

HttpServletRequest req;

....

Map parameters = req.getParameterMap();

UploadedFile uploadedFile = (UploadedFile) parameters.get("file");

String[] serverNames = uploadedFile.getServerFileNames();
debug(serverNames.length);

但是我总是只得到 1 个文件。我做错了什么?谢谢。

【问题讨论】:

  • Upload file using Servlet APIUploadedFile 是什么?是来自 JSF 吗?
  • 参数映射的类型为Map<String, String[]>,不能保存上传的文件。如果您使用的是 Servlet API 3.0,则可以使用 getPart(String) 方法。如果您使用的是旧版本,则需要一个库来解析输入流。
  • @luke Lee 你是对的,但它的工作方式,文件已经上传到服务器上,我只收到他们的文件名。 UploadedFile 类实际上只包含服务器上的文件名。

标签: java httprequest


【解决方案1】:

如果您的参数包含文件列表,您可以使用:

for (Entry entry : parameters.entrySet()) {
    if (entry.getValue() instanceof UploadedFile) {
        UploadedFile file = entry.getValue();
    }
}

【讨论】:

  • 在我的情况下,所有文件都在一个地方。我在请求中有多个苍蝇的“文件”参数。
  • 所以你可以像这样转换你的参数:parameters = (Map) parameters.get("file");并尝试我建议的解决方案
【解决方案2】:

您使用多部分表单数据并且应该正确处理所有部分或请求。 以How to upload files to server using JSP/Servlet?为例

List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
    //handling...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2020-11-05
    • 2016-08-18
    • 2016-04-28
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多