gpt4 book ai didi

java - 如何从URL获取图像并使其可通过servlet下载

转载 作者:行者123 更新时间:2023-12-02 14:10:30 25 4
gpt4 key购买 nike

我正在尝试从URL提取图像,并使其可从我的servlet下载。

我有以下代码,使用此代码,我可以下载图像。但是,当我尝试打开图像时,本地操作系统会说:“该图像可能已损坏或使用了预览无法识别的文件格式。”

response.setContentType("application/octet-stream")
response.setHeader("Content-disposition", "attachment;filename=${FilenameUtils.getBaseName(s3Url)}.${FilenameUtils.getExtension(s3Url)}")
InputStream urlStream = new URL(s3Url).openStream()
response.outputStream << IOUtils.toByteArray(new InputStreamReader(urlStream))

最佳答案

这是因为您使用的InputStreamReader用于文本内容,而不是二进制内容,请尝试此IOUtils.toByteArray(urlStream)
注意: BTW尝试避免使用IOUtils.toByteArray,因为它将图像的内容加载到内存中,如果同时加载大图像或两张多个图像,可能会导致OOME

为了避免加载到内存中,应将图像内容直接写入OutputStream中,如下所示:

try (InputStream urlStream = new URL(s3Url).openStream();
OutputStream outputStream = response.getOutputStream()) {
byte[] buffer = new byte[1024];
int length;
while ((length = urlStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
}

关于java - 如何从URL获取图像并使其可通过servlet下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37122642/

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