gpt4 book ai didi

java - 下载 zip InputStream Struts2 Java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:09 25 4
gpt4 key购买 nike

首先,对于英语,抱歉。我想知道你是否可以帮我解决这个问题。我正在尝试的是下载我使用 Struts2 和流结果从多个字节 [] 创建的 zip。

我使用 ZipOutputStream,我设法从中创建一个文件并使用 FileInputStream 读取和下载它,但我的问题是我不想创建一个文件。我只想将 ZipOutputStream 转换为 InputStream(例如转换为 ZipIntputStream)并下载 ZipInputStream。为此,我使用以下代码:

public void downloadZip() {
contentType = "application/octet-stream";
filename="myZip.zip";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] bytes;
try {
ZipOutputStream zos = new ZipOutputStream(baos);
ZipEntry ze;
bytes = otherClass.getBytes("File1");
ze = new ZipEntry("File1.pdf");
zos.putNextEntry(ze);
zos.write(bytes);
zos.closeEntry();

bytes = otherClass.getBytes("File2");
ze = new ZipEntry("File2.pdf");
zos.putNextEntry(ze);
zos.write(bytes);
zos.closeEntry();

zos.flush();
inputStream = new ZipInputStream(new ByteArrayInputStream(baos.toByteArray()));
zos.close();
}
catch(Exception e){...}
}

我的 Action struts.xml

<action...>
<result name="success" type="stream">
<param name="contentType">${contentType}</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${filename}"</param>
<param name="bufferSize">1024</param>
</result>
</action>

问题是浏览器向我显示一条消息,告诉我该文件不是有效的 zip,其大小为 0 字节。

我希望我能解释清楚,在此先感谢您。

编辑: 正如我评论的那样,我终于得到了解决方案,它与 leonbloy 的回复非常相似。除了返回 ByteArrayInputStream 我应该在创建 ByteArrayInputStream 之前关闭 ZipOutputStream。这是结果代码,也许对其他人有用:

    ...
zos.closeEntry();
zos.close();
inputStream = new ByteArrayInputStream(baos.toByteArray());
}
catch(Exception e){...}
}

感谢您的帮助。

最佳答案

参数<param name="inputName">inputStream</param>告诉 Struts2 从哪里获取将发送给客户端的原始字节。在您的情况下,您想要发送压缩字节。相反,您正在设置 inputStream=ZipInputStream ,这是一个采用压缩源的流 - 解压坐下。你不想这样,你想发送原始压缩字节。

然后替换

inputStream = new ZipInputStream(new ByteArrayInputStream(baos.toByteArray()))

inputStream = new ByteArrayInputStream(baos.toByteArray())

它应该可以工作

关于java - 下载 zip InputStream Struts2 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20195079/

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