从android轻松上传到S3

我已经在网上搜索了从android上传一个简单文件到s3的方法,但找不到任何有用的东西,我认为这是因为缺乏具体的步骤。

1.) https://mobile.awsblog.com/post/Tx1V588RKX5XPQB/TransferManager-for-Android

这是我找到的最好的指南,但它没有说明要包含哪些库。 我下载了用于android的aws sdk,里面有很多jar子。 直觉上,我包含了aws-android-sdk-s3-2.2.5.jar,但这并不完整。 它没有BasicAWSCredentials类。

2.)我在样本中看到了更多,但它并不像#1那样简单,我无法通过凭据获得核心上传function。

我感谢您的帮助

很抱歉这篇文章很久以前写的:)。

1)为了使它工作,除了aws.android-sdk-s3-2.2.5.jar之外,还需要aws-android-sdk-core-2.2.5.jar。

2)你指的是哪个样品? 最近,AWS Android SDK引入了TransferUtility作为TransferManager的替代品。 你可以在这里找到一个样本。 此外,还有一个博客解释了迁移AWS SDK for Android Transfer Manager到Transfer Utility迁移指南 。

PS:不建议在移动应用中使用AWSBasicCredentials。 相反,尝试Cognito Identity。 请参阅其开发者指南 。

S3UploadService是一个处理上传到Amazon S3的库。 它提供了一个名为S3UploadService的服务,其中包含一个静态方法,您可以在其中提供一个Context(因此静态方法可以启动该服务),一个文件,一个布尔值,指示在上传完成后是否应该删除所述文件,并且可以选择设置一个回调(Not就像普通的回调一样。它的工作方式在README文件中有解释。

这是一个IntentService,因此即使用户在上传时杀死了应用程序,上传也会运行(因为它的生命周期没有附加到应用程序的生命周期)。

要使用此库,您只需在清单中声明服务:

 ...   

然后构建一个S3BucketData实例并调用S3UploadService.upload():

  S3Credentials s3Credentials = new S3Credentials(accessKey, secretKey, sessionToken); S3BucketData s3BucketData = new S3BucketData.Builder() .setCredentials(s3Credentials) .setBucket(bucket) .setKey(key) .setRegion(region) .build(); S3UploadService.upload(getActivity(), s3BucketData, file, null); 

要添加此库,您需要将JitPack存储库添加到根build.gradle:

 allprojects { repositories { ... maven { url "https://jitpack.io" } } } 

然后添加依赖项:

 dependencies { compile 'com.github.OneCodeLabs:S3UploadService:1.0.0@aar' } 

以下是repo的链接: https : //github.com/OneCodeLabs/S3UploadService

希望这可以帮助