Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AWS Android SDK将文件上载到S3,但可以';我在桶里找不到_Java_Android_Amazon Web Services_Amazon S3 - Fatal编程技术网

Java AWS Android SDK将文件上载到S3,但可以';我在桶里找不到

Java AWS Android SDK将文件上载到S3,但可以';我在桶里找不到,java,android,amazon-web-services,amazon-s3,Java,Android,Amazon Web Services,Amazon S3,我正在学习构建一个Android应用程序,将文件上传到AWS S3。为了开始,我遵循了这个原则。一切正常,我成功地将文件上传到我的bucket 从上面提到的教程中,我构建了一个应用程序,它具有将文件上传到S3存储桶的功能。我可以在没有任何错误消息的情况下运行该程序,但是,在我的S3存储桶中无法看到该文件。我搜索过类似的讨论,但无法真正解决它。请看我下面的公司 格雷德尔先生 我在这里实现了所需的依赖项 apply plugin: 'com.android.application' android

我正在学习构建一个Android应用程序,将文件上传到AWS S3。为了开始,我遵循了这个原则。一切正常,我成功地将文件上传到我的bucket

从上面提到的教程中,我构建了一个应用程序,它具有将文件上传到S3存储桶的功能。我可以在没有任何错误消息的情况下运行该程序,但是,在我的S3存储桶中无法看到该文件。我搜索过类似的讨论,但无法真正解决它。请看我下面的公司

格雷德尔先生

我在这里实现了所需的依赖项

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.thanawin.myapplication"
        minSdkVersion 25
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    implementation 'com.amazonaws:aws-android-sdk-s3:2.6.+'
    implementation 'com.amazonaws:aws-android-sdk-cognito:2.6.+'
    implementation ('com.amazonaws:aws-android-sdk-mobile-client:2.6.+@aar') { transitive = true }
}
AndroidManifest.xml

在这里,我添加了用户权限和服务

Util.java

这是凭证

package com.example.thanawin.myapplication;

import android.content.Context;

import com.amazonaws.auth.CognitoCachingCredentialsProvider;
import com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3Client;

public class Util {

    private AmazonS3Client sS3Client;
    private CognitoCachingCredentialsProvider sCredProvider;
    private TransferUtility sTransferUtility;


    private CognitoCachingCredentialsProvider getCredProvider(Context context) {
        if (sCredProvider == null) {
            sCredProvider = new CognitoCachingCredentialsProvider(
                    context.getApplicationContext(),
                    Constants.COGNITO_POOL_ID,
                    Regions.fromName(Constants.COGNITO_POOL_REGION));
        }
        return sCredProvider;
    }


    public AmazonS3Client getS3Client(Context context) {
        if (sS3Client == null) {
            sS3Client = new AmazonS3Client(getCredProvider(context.getApplicationContext()));
            sS3Client.setRegion(Region.getRegion(Regions.fromName(Constants.BUCKET_REGION)));
        }
        return sS3Client;
    }


    public TransferUtility getTransferUtility(Context context) {
        if (sTransferUtility == null) {
            sTransferUtility = TransferUtility.builder()
                    .context(context.getApplicationContext())
                    .s3Client(getS3Client(context.getApplicationContext()))
                    .defaultBucket(Constants.BUCKET_NAME)
                    .build();
        }

        return sTransferUtility;
    }
}
Constants.java

我在这里定义了我的钥匙

package com.example.thanawin.myapplication;
public class Constants {
    public static final String COGNITO_POOL_ID = "MY_POOL_ID";
    public static final String COGNITO_POOL_REGION = "MY_POOL_REGION";
    public static final String BUCKET_NAME = "BUCKET_NAME";
    public static final String BUCKET_REGION = "BUCKET_REGION";
}
当运行代码时,没有错误,但是我无法在bucket中获取图像文件。如有任何建议或意见,将不胜感激

更新
  • 我使用的是Android Studio版本3.1.2,SDK版本26.1.1,运行在Android虚拟设备7.1.1上

  • 我在Logcat中发现了这条消息,我使用了与教程中相同的密钥和S3隐私设置

  • “D/CognitoCachingCredentialsProvider:从SharedReferences加载凭据
    在SharedReferences中找不到有效凭据“

    您使用的SDK版本是什么?还有什么是安卓版本?文件名和密钥是什么?@Karthikeyan谢谢你的回复。我使用的是AndriodSDK版本26.1.1,运行在Android虚拟设备7.1.1上。是MainActivity.java中的文件名和密钥是“aaa.jpg”?您能否按照此函数获取文件路径而不是新文件(“/sdcard/aaa.jpg”)?@Karthikeyan我将尝试在代码中实现它。顺便说一句,我在logcat“D/CognitoCachingCredentialsProvider:从SharedReferences加载凭据在SharedReferences中找不到有效凭据”中看到了这条消息。这意味着此时没有有效凭据,但当向S3发出请求时,将获取和存储凭据,并用于联系S3。
    package com.example.thanawin.myapplication;
    
    import android.content.Context;
    
    import com.amazonaws.auth.CognitoCachingCredentialsProvider;
    import com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility;
    import com.amazonaws.regions.Region;
    import com.amazonaws.regions.Regions;
    import com.amazonaws.services.s3.AmazonS3Client;
    
    public class Util {
    
        private AmazonS3Client sS3Client;
        private CognitoCachingCredentialsProvider sCredProvider;
        private TransferUtility sTransferUtility;
    
    
        private CognitoCachingCredentialsProvider getCredProvider(Context context) {
            if (sCredProvider == null) {
                sCredProvider = new CognitoCachingCredentialsProvider(
                        context.getApplicationContext(),
                        Constants.COGNITO_POOL_ID,
                        Regions.fromName(Constants.COGNITO_POOL_REGION));
            }
            return sCredProvider;
        }
    
    
        public AmazonS3Client getS3Client(Context context) {
            if (sS3Client == null) {
                sS3Client = new AmazonS3Client(getCredProvider(context.getApplicationContext()));
                sS3Client.setRegion(Region.getRegion(Regions.fromName(Constants.BUCKET_REGION)));
            }
            return sS3Client;
        }
    
    
        public TransferUtility getTransferUtility(Context context) {
            if (sTransferUtility == null) {
                sTransferUtility = TransferUtility.builder()
                        .context(context.getApplicationContext())
                        .s3Client(getS3Client(context.getApplicationContext()))
                        .defaultBucket(Constants.BUCKET_NAME)
                        .build();
            }
    
            return sTransferUtility;
        }
    }
    
    package com.example.thanawin.myapplication;
    public class Constants {
        public static final String COGNITO_POOL_ID = "MY_POOL_ID";
        public static final String COGNITO_POOL_REGION = "MY_POOL_REGION";
        public static final String BUCKET_NAME = "BUCKET_NAME";
        public static final String BUCKET_REGION = "BUCKET_REGION";
    }