我正在嘗試將 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
"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()
);
}
}
uj5u.com熱心網友回復:
您可以使用 aResponseTransformer將回應轉換為輸入流:
s3.getObject(getObjectRequest, ResponseTransformer.toInputStream());
我的具體方法如下(假設s3已經建立了連接):
public static InputStream getObject(String key) throws IOException {
GetObjectRequest getObjectRequest = GetObjectRequest.builder()
.bucket(bucketName)
.key(key)
.build();
return s3.getObject(getObjectRequest, ResponseTransformer.toInputStream());
}
然后可以以通常的方式將生成的輸入流添加到您的 zip 檔案中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/335982.html
