将 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'
在清单文件中添加以下服务:
<service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
android:enabled="true" />
基本步骤:
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();
}
});
参考自:http://yasirameen.com/2016/10/uploading-file-to-amazon-s3/ http://yasirameen.com/2016/10/uploading-file-to-amazon-s3/