代号一上传图片到S3存储桶权限
Posted
技术标签:
【中文标题】代号一上传图片到S3存储桶权限【英文标题】:Codename one upload image to S3 bucket permission 【发布时间】:2017-05-05 11:14:26 【问题描述】:代号一的 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 浏览器时,我确实看到了该文件,当我单击该文件时,我收到拒绝访问弹出消息。存储桶和文件夹以及子文件夹已获得完全授予权限。
图像由手机摄像头拍摄。感谢任何帮助。
【问题讨论】:
可能是目录或者bucket本身对谁可以查看有限制? 您好,谢谢您的回复。所有用户都拥有对该文件夹和存储桶的读写权限。通过在 S3 浏览器中选择文件,没有检查权限。我在文件夹中拖放了一个文件,并且确实看到了权限检查。不知道现在该怎么办。任何帮助都感激不尽。谢谢。 【参考方案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://***.com/questions/34055084/s3-user-cannot-access-object-in-his-own-s3-bucket-if-created-by-another-user
** 感谢 Shai 的积极响应并尽您所能提供帮助 **
【讨论】:
以上是关于代号一上传图片到S3存储桶权限的主要内容,如果未能解决你的问题,请参考以下文章
上传时出现 Amazon S3 存储桶 MalformedXML 错误
使用预签名 URL 上传到 S3 存储桶会出现 403 禁止错误