gpt4 book ai didi

Android:使用 AWS 上传到私有(private)存储桶后无法访问媒体

转载 作者:行者123 更新时间:2023-11-29 00:03:28 25 4
gpt4 key购买 nike

在 AWS 上创建的 Bucket 是私有(private)的。使用私有(private)访问模式上传时,我无法访问该文件。使用以下方法上传媒体时上传成功。

具有从 util 类获取的 URL 的桶名称

    String bucketName = Util.getBucketNameFromUrl(uploadPath);
String fileNameIncludingSubFolders = localPath.substring(localPath.lastIndexOf("/")+1);
Uri mUri = Uri.parse(localPath);

上传到AWS的文件

File mFile = new File(mUri.toString().trim());

AmazonS3Client s3Client = new AmazonS3Client( Ut.getCredentialsCognito(context));
PutObjectRequest por = new PutObjectRequest(bucketName, fileNameIncludingSubFolders, mFile);
por.setProgressListener(new ProgressListener() {

@Override
public void progressChanged(ProgressEvent prgEvent) {
if (progressUpdate != null) {
progressUpdate.progressStatus(String.valueOf(prgEvent.getBytesTransferred()));
}
}
});

上传媒体文件时访问模式为私有(private)

        try {
por.setCannedAcl(CannedAccessControlList.Private);
s3Client.putObject(por);
} catch (Exception e) {
e.printStackTrace();
}

最佳答案

你所做的一切都很好。上传会很好。
您唯一需要的是生成签名 URL。
为此使用 AWS SDK GeneratePresignedUrlRequest。这个类有很多方法,你还可以为链接和其他东西设置到期日期。

AWSCredentials awsCredentials = new BasicAWSCredentials("ACCESS_KEY_ID", "SECRET_KEY_ID");
AmazonS3 s3client = new AmazonS3Client(awsCredentials );
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, fileKey);
URL objectURL = s3client.generatePresignedUrl(request);

您可以找到文件 key 和 key 名称如下:
https://s3-[region]..amazonaws.com/[bucket name]/[file key]

关于Android:使用 AWS 上传到私有(private)存储桶后无法访问媒体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46336668/

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