gpt4 book ai didi

tomcat - 如何将 POST 数据从 servlet 读取到 ZipStream?

转载 作者:行者123 更新时间:2023-11-28 22:32:44 25 4
gpt4 key购买 nike

情况是 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 为空。 (ZIP 文件是有效的,顺便说一句)

有什么想法吗?谢谢

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

最佳答案

EDIT: Type is multipart/form-data ("multipart/form-data; boundary=---------------------8ce556d90e9deb6")

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

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

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

另见:

关于tomcat - 如何将 POST 数据从 servlet 读取到 ZipStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7716645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com