如何将servlet中的POST数据读入ZipStream?

时间:2011-10-10 17:48:14

标签: tomcat servlets stream zip

情况是ZIP文件已经发布到Tomcat服务器,并且由于它没有与之关联的参数名称,我们将直接访问请求的流。

  ServletInputStream sis = request.getInputStream()
  ZipInputStream zis = new ZipInputStream(sis)
  ZipEntry zEntry = zis.getNextEntry()
  while (zEntry != null) {
    // do something with zEntry
    zEntry = zis.getNextEntry()
  }

令人信服的简单,但它不起作用。它永远不会进入while循环,因为第一个zEntry为null。 (ZIP文件有效,顺便说一句)

有什么想法吗? 感谢

编辑:类型是multipart / form-data(“multipart / form-data; boundary = --------------------- 8ce556d90e9deb6”)

1 个答案:

答案 0 :(得分:0)

  

编辑:类型是multipart / form-data(“multipart / form-data; boundary = --------------------- 8ce556d90e9deb6”)< / em>的

您需要使用multipart/form-data解析器来提取上传的文件。您不应该将其原始提供给ZipInputStream。然而令我感到惊讶的是,它没有引发异常,因为它不是ZIP文件格式。

getParameter()和consorts仅适用于application/www-form-urlencoded个请求。他们都会在null次请求中返回multipart/form-data。您需要使用getParts()方法。或者,当您仍然使用Servlet 2.5或更早版本时,您需要在Apache Commons Fileupload的帮助下解析正文。

无论哪种方式,您都应该能够遍历multipart/form-data个项目并将上传的文件作为InputStream获取,然后使用ZipInputStream进行阅读。

另见: