来自代号的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弹出消息。存储桶和文件夹已获得完全授予权限以及子文件夹。
感谢任何帮助。
答案 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非常敏感,尽可能多地提供帮助**