我想在android上上传到S3。但是,它实际上并没有上传图片。一如当年我看到一个错误的唯一事情是这样的:在android上上传到s3桶时出错
d/CognitoCachingCredentialsProvider:在SharedPreferences
没有找到有效的凭据但是,谷歌搜索时,我发现各种相互矛盾的信息。我能找到的唯一真实的事情是,这可能是由于没有正确地向项目添加cognito框架而导致的,但我已经验证它是在build.gradle中。
我也应该注意到,我在iOS上使用相同的凭据就可以工作。有人提到我需要为每个平台使用不同的身份池。所以我为Android创建了一个新的身份池,并确保我拥有匹配的权限,但它也无法正常工作。考虑到iOS如何正常工作并上传图像没有问题,我觉得它必须与Android上的代码一起使用。我包括下面。
有此功能从cognito
private CognitoCachingCredentialsProvider getCreadentials(Context context) {
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
context.getApplicationContext(),
IDENTITY_POOL_ID,
Regions.US_EAST_1
);
return credentialsProvider;
}
然后函数获得凭据实际上将图像保存到S3
public void saveImage(Context context, Bitmap data, String key, Double lat, Double lon) {
exifBuilder = new ExifBuilder(mContext, lat, lon);
File file = writeImageToFile(context, data);
s3 = new AmazonS3Client(getCreadentials(context));
if (file != null) {
TransferUtility transferUtility = new TransferUtility(s3, context.getApplicationContext());
TransferObserver observer = transferUtility.upload(
BUCKET_NAME,
key,
file
);
}
}
我已经验证该文件不为空。并且还验证它是正确的身份池ID。
这里有什么突出的缺失?