如何将POST数据从servlet读入ZipStream



情况是一个ZIP文件已经被post到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为空。(ZIP文件是有效的,btw)

任何想法?由于

编辑:类型是multipart/form-data ("multipart/form-data;边界 =--------------------- 8 ce556d90e9deb6")
编辑:类型为multipart/form-data ("multipart/form-data;边界 =--------------------- 8 ce556d90e9deb6")

您需要使用multipart/form-data解析器来提取上传的文件。你不应该把它生喂给ZipInputStream。然而,令我惊讶的是,它没有抛出一个异常,它不是ZIP文件格式。

getParameter()和配偶仅为application/www-form-urlencoded请求而设计。它们都将在multipart/form-data请求时返回null。您需要使用getParts()方法代替。或者,当您仍然使用Servlet 2.5或更早的版本时,则需要在Apache Commons Fileupload的帮助下解析正文。

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

参见:

  • 如何使用JSP/Servlet上传文件到服务器?

相关内容

  • 没有找到相关文章

最新更新