情况是,一个ZIP文件已经被POSTed到了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;boundary=---------------------8ce556d90e9deb6")
发布于 2011-10-11 02:24:23
数据编辑:类型为multipart/form-
(" multipart/form-data;boundary=---------------------8ce556d90e9deb6")
您需要使用multipart/form-data解析器来提取上传的文件。你不应该把它生喂给ZipInputStream。然而,令我惊讶的是,它没有抛出一个异常,它不是ZIP文件格式。
getParameter()和consorts仅为application/www-form-urlencoded请求而设计。它们都将在multipart/form-data请求时返回null。您需要改用getParts()方法。或者,当您还在使用Servlet2.5或更早的版本时,则需要在Apache Commons Fileupload的帮助下解析主体。
无论采用哪种方式,您都应该能够迭代multipart/form-data项,并将上传的文件作为InputStream获取,然后使用ZipInputStream读取该turn。
另请参阅:
https://stackoverflow.com/questions/7716645
复制相似问题