来自代号一的 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 浏览器时,我确实看到了该文件,当我单击该文件时,我收到“访问被拒绝”弹出消息。存储桶和文件夹以及子文件夹已被授予完全授予权限。
如有任何帮助,我们将不胜感激。
经过一番研究,我找到了解决方案。希望它可以帮助某人。 解决方案:
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 访问,现在可以读取文件了。
** 感谢 Shai 的积极响应并尽可能提供帮助 **
上面的代码不起作用。它返回 301 错误。 你能帮忙吗?
String strImage = Capture.capturePhoto(300, -1);
String s3Bucket = "https://s3.amazonaws.com/my-bucket/";
String fileName = "imagename.jpg";
MultipartRequest request = new MultipartRequest();
request.setUrl(s3Bucket);
request.addArgumentNoEncoding("key", fileName);
request.addArgument("acl", "bucket-owner-full-control");
request.addData("file", strImage, "image/jpeg");
// Init server request
NetworkManager.getInstance().addToQueueAndWait(request);
// Check server availability
int http_code = request.getResponseCode();
UI.Log("NetService.IsNetworkAvailable", "Response Code: " + http_code );
if (http_code == 200) {
return true;
} else {
return false;
}