【问题标题】:Error uploading to s3 bucket on android在 android 上上传到 s3 存储桶时出错
【发布时间】:2017-10-04 07:49:54
【问题描述】:

我正在尝试在 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。

这里有什么明显的缺失吗?

【问题讨论】:

    标签: android amazon-s3 amazon-cognito


    【解决方案1】:

    事实证明,问题不能源自上述代码。我收到的“错误”无关紧要,仅表示 cognito 服务之前没有为该设备建立用户 ID。然而问题是,上面调用的将图像保存到 S3 的函数是从 uithread 调用的,并且由于网络活动不能在 UI 线程上发生,因此它没有进行调用。我在尝试输出 credentialsProvider.getProviderId() 后发现了这一点,并收到了一个错误。

    【讨论】:

      【解决方案2】:

      我看到了这个问题,上传未完成并出现错误或成功标志。

      就我而言,这是因为我没有在清单中声明 TransferService

          <service
              android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
              android:enabled="true"/>
      

      这会阻止上传,并且监听器永远不会收到通知。

      【讨论】:

        猜你喜欢
        • 2019-02-01
        • 2018-08-19
        • 2017-04-19
        • 2015-05-05
        • 1970-01-01
        • 1970-01-01
        • 2015-10-28
        • 2016-03-18
        • 1970-01-01
        相关资源
        最近更新 更多