如何使用适用于 Android 的 AWS 开发工具包将图像上传到 Digital Ocean Spaces?

Qua*_*yen 5 api android spaces amazon-web-services

由于 Digital Ocean Spaces API 与 AWS SDK 兼容,如何使用适用于 Android 的 AWS SDK 以编程方式将图像上传到 Digital Ocean Spaces?

Qua*_*yen 4

将 sdk 添加到 android studio 项目中的 build.gradle 中:

compile 'com.amazonaws:aws-android-sdk-core:2.6.9'
compile 'com.amazonaws:aws-android-sdk-s3:2.6.9'
compile 'com.amazonaws:aws-android-sdk-ddb:2.6.9'
Run Code Online (Sandbox Code Playgroud)

在清单文件中添加以下服务:

<service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
    android:enabled="true" />
Run Code Online (Sandbox Code Playgroud)

基本步骤:

1.首先使用 BasicAWSCredentails 类创建用于访问 S3 的 AWS 凭证

2.将AWS凭证传递给AmazonS3实例

3.然后将 AmazonS3 对象传递给 TransferUtility 类

4.将BucketName、FileName和FileObject(要传输的)分配给TransferObserver类

5.最后,使用 TransferObserver 类的 setTransferListener 跟踪您的转账详细信息

代码(经过测试和工作):

    AmazonS3Client s3;
    BasicAWSCredentials credentials;
    TransferUtility transferUtility;
    final TransferObserver observer;
    String key = "YOUR_SPACES_KEY";
    String secret = "YOUR_SPACES_SECRET_KEY";

    credentials = new BasicAWSCredentials(key, secret);
    s3 = new AmazonS3Client(credentials);
    s3.setEndpoint("https://BUCKET_NAME.nyc3.digitaloceanspaces.com/DIRECTORY_IF_NEEDED");

    transferUtility = new TransferUtility(s3, activity);
    CannedAccessControlList filePermission = CannedAccessControlList.PublicRead;

    observer = transferUtility.upload(
            "", //empty bucket name, included in endpoint
            "FILE_NAME.PNG",
            new File(), //a File object that you want to upload
            filePermission
    );

    observer.setTransferListener(new TransferListener() {
        @Override
        public void onStateChanged(int id, TransferState state) {
            if (state.COMPLETED.equals(observer.getState())) {
                Toast.makeText(activity, "Space upload completed !!", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
        }

        @Override
        public void onError(int id, Exception ex) {
            Toast.makeText(activity, "Space upload error: " + ex.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
Run Code Online (Sandbox Code Playgroud)

参考来源:http ://yasirameen.com/2016/10/uploading-file-to-amazon-s3/

  • 我认为将 YOUR_SPACES_KEY 放在应用程序端不可以吗? (2认同)