【发布时间】:2019-01-10 11:51:59
【问题描述】:
我的方法接收缓冲读取器并转换文件中的每一行。但是,我需要将此转换的输出上传到 s3 存储桶。这些文件非常大,所以我希望能够将我的上传流式传输到 s3 对象中。
为此,我认为我需要使用分段上传,但我不确定我是否正确使用它,因为似乎没有上传任何内容。
这是我的方法:
public void transform(BufferedReader reader)
{
Scanner scanner = new Scanner(reader);
String row;
List<PartETag> partETags = new ArrayList<>();
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest("output-bucket", "test.log");
InitiateMultipartUploadResult result = amazonS3.initiateMultipartUpload(request);
while (scanner.hasNext()) {
row = scanner.nextLine();
InputStream inputStream = new ByteArrayInputStream(row.getBytes(Charset.forName("UTF-8")));
log.info(result.getUploadId());
UploadPartRequest uploadRequest = new UploadPartRequest()
.withBucketName("output-bucket")
.withKey("test.log")
.withUploadId(result.getUploadId())
.withInputStream(inputStream)
.withPartNumber(1)
.withPartSize(5 * 1024 * 1024);
partETags.add(amazonS3.uploadPart(uploadRequest).getPartETag());
}
log.info(result.getUploadId());
CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(
"output-bucket",
"test.log",
result.getUploadId(),
partETags);
amazonS3.completeMultipartUpload(compRequest);
}
【问题讨论】:
-
也许您从阅读 AWS 文档开始?
-
我做到了,但我只能找到使用输入流而不是输出流的分段上传的示例。
标签: java amazon-s3 buffer java.util.scanner multipart