gpt4 book ai didi

java - 将多个图像写入 ServletOutputStream?

转载 作者:行者123 更新时间:2023-11-30 08:14:55 26 4
gpt4 key购买 nike

我有一个要求,从 Web 服务(例如:List)获取多个图像,并且必须将这些图像写入 ServletOutputStream。

当我单击“VIEW”链接时,它会调用 servlet,而该 servlet 会调用 Web 服务并以列表形式接收多个图像。

现在我正在尝试将这些图像写入 ServletOutputStream,但它不起作用..

尝试将图像作为 zip 发送

response.setContentType("application/zip");
OutputStream os = null;
BufferedOutputStream bos = null;
ZipOutputStream zos = null;
try{
os = resp.getOutputStream();
bos = new BufferedOutputStream(os);

zos = new ZipOutputStream(bos);
zos.setLevel(ZipOutputStream.STORED);

sendMultipleFiles(zos, annotContent,"display");
}catch (IOException e) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
} finally {
if (zos != null) {
zos.finish();
zos.flush();
}
bos.close();
os.close();
}

private void sendMultipleFiles(ZipOutputStream zos, Collection<byte[]> filesToSend, String name) throws IOException {
myLogger.info("sendMultipleFiles is invoked..");
for(byte[] f: filesToSend) {

InputStream inStream = null;
ZipEntry ze = null;

try {
inStream = new ByteArrayInputStream(f);

ze = new ZipEntry(name + "-archived");
ze.setComment("Dummy file");

zos.putNextEntry(ze);
int readByte = 0;
while((readByte = inStream.read()) != -1)
{
zos.write(readByte);
}
} catch (IOException e) {
System.out.println("Cannot find " );
} finally {
if (ze != null) {
zos.closeEntry();
}
inStream.close();

}
}

以上代码不起作用..任何建议将不胜感激..

最佳答案

您的解决方案将取决于您所服务的内容类型 - 如果您正在提供 HTML 响应,则可以通过将图像存储在磁盘上( outside the context root 并写入图像显示端点)来解决问题,或者如果图像很小 - 将字节发送为 base64 encoding in the image tag directly .

如果您的响应类型不是 HTML - 这里有一些选项 - 您可以返回 ZIP file .

使用 MultiPart MIME Extension 的 servlet 的不太标准的方式.

编辑:根据评论,mime 类型是 JPEG - 一种选择是将 JPEG 组合成一个更大的(不能发送多个)。合并二进制文件的字节 - JPEG 有其自己的压缩格式以及页眉、页脚和 EXIF 信息 - 您可能需要专门的 API 将它们合并为一个。 Here是我遇到的一个。如果合并 JPG 不是一种选择 - 您想要实现的目标无法一次性完成。

关于java - 将多个图像写入 ServletOutputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29800569/

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