当前位置: 首页 > 知识库问答 >
问题:

如何上传Android文件到S3桶与公共权限

穆正祥
2023-03-14

我一直在尝试将文件上传到s3存储桶。但该文件从未公开供查看。我必须手动将bucket中的文件/文件夹公开(每次上传时),以便查看。

有没有一种方法可以上传一个Android文件(位图),该文件的默认权限是在运行期间公开查看。如果可能的话,我更愿意通过编程来实现这一点。我查看了s3文档,没有找到任何有用的东西。

共有2个答案

东方志尚
2023-03-14

要在默认情况下公开bucket中的所有对象,请查看此问题或此问题的答案。

要指定通过Android上传每个文件时的公共访问权限,请在PutObjectRequest上设置如下ACL:

PutObjectRequest putObjectRequest = new PutObjectRequest()
    .withCannedAcl(CannedAccessControlList.PublicRead)

此时,似乎无法使用TransferUtility一步设置ACL:https://github.com/aws/aws-sdk-android/issues/63

因此,通过TransferUality上传文件后,您需要执行以下操作:

s3client.setObjectAcl(bucketName, keyName, CannedAccessControlList.PublicRead);
施昊然
2023-03-14

是的,对于那些正在使用TransferUtility的人来说,使用下面的方法上传任何文件以供Android系统中的TransferUtility公开阅读是非常容易的,

transferUtility.upload(String bucketName,String key,File file,CannedAccessControlList cannedAcl)

示例:

transferUtility.upload("MY_BUCKET_NAME","FileName",your_file,CannedAccessControlList.PublicRead);
 类似资料:
  • 我正试图通过React将文件上载到s3存储桶,我正在与4xx和5xx进行斗争:( 下面是我的代码库: 如果我发了这篇文章,我会得到500英镑,而这个错误是: java.io.IOException:UT000036:解析多部分数据时连接终止 我还注意到documents属性为空: 这是后端的API文档: 谢谢!

  • AWS Java SDK 2.15.73(当前最新版本)。Java 1.8.222操作系统IBM AIX 7.1 开发一个将文件上传到S3 bucket的应用程序。 在Maven pom文件中: Stacktrace的开始: 异常在sendFileToAWSNoAuth=无法马歇尔请求JSON: BasUri不得为空。software.amazon.awssdk.core.exception.Sd

  • 我想使用S3托管通过Kotlin Spring Boot应用程序上载的文件。我按照说明使用了各种其他文档,并尝试了一些解决stackoverflow上类似问题的方法。我总是收到403错误。如何设置S3和IAM以便上载文件?我如何找出问题所在?任何帮助都将不胜感激。 我已经激活了访问日志记录,这需要很长时间,而且还没有对我有太大帮助,特别是因为生成日志需要45分钟。忽略状态为200的响应,日志中会出

  • 如果有人帮我解决这个问题,我会非常感激。 我正在为我的项目使用codeigniter框架。并想将我的图像上传到amazon s3桶中。当我尝试使用S3.php文件时 string(92)“不支持您提供的授权机制。请使用AWS4-HMAC-SHA256。” 有人能帮我解决这个问题吗。

  • 我有一个亚马逊S3桶,我公开了这样的政策 我的水桶现在显示为http://bucket.s3-website-us-east-1.amazonaws.com/ 我看到其他人把他们的水桶称为http://s3-us-east-1.amazonaws.com/bucket/ 我更喜欢第二个URL,但它给出了拒绝访问。 如何更改策略以允许第二个URL?

  • 问题内容: 我想使用python复制s3存储桶中的文件。 例如:我的存储桶名称=测试。在存储桶中,我有2个文件夹名称为“ dump”和“ input”。现在,我想使用python将文件从本地目录复制到S3“转储”文件夹…有人可以帮助我吗? 问题答案: 尝试这个… [更新]我不是pythonist,所以感谢您对import语句的注意。另外,我不建议将凭证放在您自己的源代码中。如果您在AWS内部运行此