【发布时间】:2021-12-09 09:52:11
【问题描述】:
我正在尝试将 s3 存储桶文件添加到 zip 中。 s3 存储桶中的文件为二进制/八位字节流格式。
当我运行下面的方法时
public static void addFileToZip(ZipOutputStream zip, String fileName, InputStream fileContent) throws IOException {
try {
zip.putNextEntry(new ZipEntry(fileName));
IOUtils.copy(fileContent, zip);
zip.closeEntry();
} catch (IOException ioe) {
fileContent.close();
}
}
}
执行IOUtils.copy方法时抛出下面的IO异常
"exception": "Content-Length 分隔的消息体过早结束(预期:206,034;收到:0)"
关于我如何处理这个问题或做错了什么有什么建议吗? 谢谢。
编辑:- @LeeGreiner 我得到这样的 InputStream:
public ResponseInputStream<GetObjectResponse> getObject(String key) {
try (S3Client s3 = s3Client.getClient()) {
return s3.getObject(
GetObjectRequest.builder()
.bucket(bucketName)
.key(key)
.build()
);
}
}
【问题讨论】:
-
你能说明你是如何将 InputStream 传递给这个方法的吗?你用的是
S3Object.getObjectContent(),对象是bucket还是bucket中的文件? -
@LeeGreiner 我已在问题中添加为编辑,它是存储桶中的文件。
标签: java spring-boot amazon-s3