我试图从s3存储桶中下载文件,但我继续使用“#34;传输失败”消息获取非法状态异常。" 上传工作正常。这是我的代码和堆栈跟踪。谁知道可能出错了什么? (最后注意,image.url不是一个完整的url,它是一个objectKey)
File parent = new File(getFilesDir() + "/images");
parent.mkdirs();
File file = new File(getFilesDir() + "/images/" + image.url);
File thumbFile = new File(getFilesDir() + "/images/" + image.thumbUrl);
System.out.println("File path: " + file.getPath());
System.out.println("Thumbnail path: " + thumbFile.getPath());
TransferObserver observer = transferUtility.download(
BUCKET_NAME, /* The bucket to download from */
image.url, /* The key for the object to download */
file /* The file to download the object to */
);
observer.setTransferListener(downloadListener);
使用ID 313下载时遇到错误:传输失败。 java.lang.IllegalStateException:传输失败。 在com.amazonaws.mobileconnectors.s3.transferutility.TransferObserver $ TransferContentObserver.onChange(TransferObserver.java:219) 在android.database.ContentObserver.onChange(ContentObserver.java:129) 在android.database.ContentObserver $ NotificationRunnable.run(ContentObserver.java:180) 在android.os.Handler.handleCallback(Handler.java:730) 在android.os.Handler.dispatchMessage(Handler.java:92) 在android.os.Looper.loop(Looper.java:176) 在android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) 在java.lang.reflect.Method.invoke(Method.java:525) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1046) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 在dalvik.system.NativeStart.main(本地方法)
答案 0 :(得分:0)
我自己解决了。我认为只要授予“所有人”读取访问权限就足够了。实际上,我必须设置一个存储桶策略,以使上传的每个文件都能获得这些设置。我使用了这个政策:
{ “版本”:“2012年10月17日”, “声明”:[ { “SID”: “AddPerm” “效果”:“允许”, “校长”:“”, “行动”:[ “S3:GetObject的”], “资源”:[ “ARN:AWS:S3 ::: examplebucket / ”] } ] }