情况是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”)
答案 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
进行阅读。