代理一个上传图像到S3存储桶权限

时间:2017-05-05 11:14:27

标签: amazon-s3 codenameone

来自代号的Shai帮助我将图像上传到s3存储桶,我能够上传图像,我偶然注意到当我从浏览器访问图像时,我收到了拒绝访问错误。

图片在移动应用上正常加载,同一图片在网络浏览器中抛出了拒绝访问权限。

这是我的代码:

   String strImage = Capture.capturePhoto(width, -1);
   String s3Bucket = "https://s3.amazonaws.com/MyBuckt/";
   String fileName = "Images/1234567";
   MultipartRequest rq = new MultipartRequest();
   rq.setUrl(s3Bucket);
   rq.addArgumentNoEncoding("key", fileName);
   rq.addArgument("acl", "public-read-write"); // here I give read-write access
   rq.addData("file", strImage, "image/jpeg");
   NetworkManager.getInstance().addToQueue();

当我启动S3浏览器时,我确实看到了该文件,当我点击该文件时,我获得了Access denied弹出消息。存储桶和文件夹已获得完全授予权限以及子文件夹。

  • 手机相机拍摄图像。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

经过一些研究,我找到了解决方案。希望它可以帮助某人。 解决方案:

   String strImage = Capture.capturePhoto(width, -1);
   String s3Bucket = "https://s3.amazonaws.com/MyBuckt/";
   String fileName = "Images/1234567";
   MultipartRequest rq = new MultipartRequest();
   rq.setUrl(s3Bucket);
   rq.addArgumentNoEncoding("key", fileName);
   //rq.addArgument("acl", "public-read-write"); // here I give read-write access
   rq.addArgument("acl", "bucket-owner-full-control");
   rq.addData("file", strImage, "image/jpeg");
   NetworkManager.getInstance().addToQueue();

我修改了acl访问级别,如下所示

rq.addArgument("acl", "bucket-owner-full-control");

我从读数中了解到,上传的项目除了删除之外不会有任何访问权限。通过此acl访问,现在可以读取文件。

我从以下地址获得信息的链接: https://stackoverflow.com/questions/34055084/s3-user-cannot-access-object-in-his-own-s3-bucket-if-created-by-another-user

**感谢Shai非常敏感,尽可能多地提供帮助**