Java transferutility传输失败

Java transferutility传输失败,java,android,amazon-s3,download,illegalstateexception,Java,Android,Amazon S3,Download,Illegalstateexception,我试图从s3存储桶下载文件,但我不断收到一个非法状态异常,消息为“传输失败” 上传效果很好。这是我的代码和stacktrace。有人知道可能出了什么问题吗?(最后注意,image.url不是一个完整的url,它是一个objectKey) id为313的下载遇到错误:传输失败。 java.lang.IllegalStateException:传输失败。 在com.amazonaws.mobileconnectors.s3.transferutility.TransferObserver$Trans

我试图从s3存储桶下载文件,但我不断收到一个非法状态异常,消息为“传输失败” 上传效果很好。这是我的代码和stacktrace。有人知道可能出了什么问题吗?(最后注意,image.url不是一个完整的url,它是一个objectKey)

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) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于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(本机方法)


我自己解决了。我认为授予“所有人”对我的存储桶的读取权限就足够了。事实上,我必须设置一个bucket策略,使上传的每个文件都能获得这些设置。我使用了这个策略:

{ “版本”:“2012-10-17”, “声明”:[ { “Sid”:“AddPerm”, “效果”:“允许”, “委托人”:“, “操作”:[“s3:GetObject”], “资源”:[“arn:aws:s3:::examplebucket/”] } ]
}我自己解决了。我认为授予“所有人”对我的存储桶的读取权限就足够了。事实上,我必须设置一个bucket策略,使上传的每个文件都能获得这些设置。我使用了这个策略:

{ “版本”:“2012-10-17”, “声明”:[ { “Sid”:“AddPerm”, “效果”:“允许”, “委托人”:“, “操作”:[“s3:GetObject”], “资源”:[“arn:aws:s3:::examplebucket/”] } ] }

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);