gpt4 book ai didi

java - 如何等待主线程直到AWS S3文件上传完成

转载 作者:行者123 更新时间:2023-12-01 23:04:18 28 4
gpt4 key购买 nike

根据一些用户输入,我想将一些图像(大约 10-15 张)上传到 AWS S3 存储桶。完成后,前端应将上传的图像显示给客户端。

但是根据我当前的实现,在将图像上传到S3存储桶之前,前端页面正在从后端获取响应。

我使用以下代码部分将文件上传到 S3。

      AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();

ObjectMetadata putObjectMetaData = new ObjectMetadata();
putObjectMetaData.setContentType(contentType);

PutObjectRequest putObject =
new PutObjectRequest(s3BucketPath, fileName, fileStream, new ObjectMetadata())
.withCannedAcl(CannedAccessControlList.PublicRead);
putObject.setMetadata(putObjectMetaData);

PutObjectResult result = s3Client.putObject(putObject);

据我了解,S3 上传是在单独的线程上进行的。有没有办法从同一个主线程进行 S3 上传。或者有没有其他方法可以等到S3上传完成?

非常感谢您的回复。

最佳答案

您可以尝试传输管理器[1]。完整示例请参见此处[2]。


import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.transfer.MultipleFileUpload;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;

-----------------------------------

File f = new File(file_path);
TransferManager xfer_mgr = TransferManagerBuilder.standard().build();
try {
Upload xfer = xfer_mgr.upload(bucket_name, key_name, f);
// loop with Transfer.isDone()
XferMgrProgress.showTransferProgress(xfer);
// or block with Transfer.waitForCompletion()
XferMgrProgress.waitForCompletion(xfer);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
xfer_mgr.shutdownNow();

[1] https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-s3-transfermanager.html[2]https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java

关于java - 如何等待主线程直到AWS S3文件上传完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408751/

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