首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:媒体在使用AWS上传到私有桶后不进行访问

Android:媒体在使用AWS上传到私有桶后不进行访问
EN

Stack Overflow用户
提问于 2017-09-21 06:13:22
回答 1查看 88关注 0票数 1

在AWS上创建的桶是私有的。我无法访问文件时,上传与私人访问模式。使用以下方法上传媒体时成功上传。

从util类获取URL的桶名

代码语言:javascript
运行
复制
    String bucketName = Util.getBucketNameFromUrl(uploadPath);
    String fileNameIncludingSubFolders = localPath.substring(localPath.lastIndexOf("/")+1);
    Uri mUri = Uri.parse(localPath);

上传到AWS的文件

代码语言:javascript
运行
复制
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()));
                }
            }
        });

上传媒体文件时访问模式是私有的

代码语言:javascript
运行
复制
        try {
            por.setCannedAcl(CannedAccessControlList.Private);
            s3Client.putObject(por);
        } catch (Exception e) {
            e.printStackTrace();
        }
EN

回答 1

Stack Overflow用户

发布于 2017-09-22 09:43:59

你所做的一切都是好的。上传会很好的。

唯一需要的是生成签名的URL。

为此,请使用AWS GeneratePresignedUrlRequest。这个类有很多方法,您也可以为链接和其他东西设置过期日期。

代码语言:javascript
运行
复制
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);

您可以找到文件密钥和密钥名称如下:

https://s3-[region]..amazonaws.com/[bucket name]/[file key]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46336668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档