使用 S3 Transfer Utility - AWS Mobile SDK

AWS SDK for .NET 现在包括适用于 Xamarin 的 AWS Mobile SDK。本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。

使用 S3 Transfer Utility

利用 S3 Transfer Utility,可以更轻松地从 Xamarin 应用程序向 S3 上传文件以及从中下载文件。

初始化 TransferUtility

创建 S3 客户端,将其传递给您的 AWS 凭证对象,然后将 S3 客户端传递到 Transfer Utility,如下所示:

var s3Client = new AmazonS3Client(credentials,region); var transferUtility = new TransferUtility(s3Client);

(可选) 配置 TransferUtility

有三个可选属性可以配置:

  • ConcurrentServiceRequests – 决定将用于上传/下载文件的活动线程或并发异步 Web 请求的数量。默认值为 10。

  • MinSizeBeforePartUpload – 获取或设置上传分段的最小分段大小 (以字节为单位)。默认值为 16 MB。降低最小分段大小会导致多分段上传被拆分为大量更小的分段。此值设置得过低会对传输速度产生不利影响,导致每个分段出现额外的延迟和网络通信。

  • NumberOfUploadThreads – 获取或设置执行线程的数量。该属性决定将用于上传文件的活动线程的数量。默认值为 10 个线程。

要配置 S3 TransferUtility 客户端,请创建一个配置对象,设置您的属性,然后将此对象传递至您的 TransferUtility 构造函数,如下所示:

var config = new TransferUtilityConfig(); config.ConcurrentServiceRequests = 10; config.MinSizeBeforePartUpload=16*1024*1024; config.NumberOfUploadThreads=10; var s3Client = new AmazonS3Client(credentials); var utility = new TransferUtility(s3Client,config);

下载文件

要从 S3 下载文件,请对 Transfer Utility 对象调用 Download,并传递下列参数:

  • file – 要下载的文件的名称 (字符串)

  • bucketName – 要从中下载文件的 S3 存储桶的字符串名称

  • key – 代表要下载的 S3 对象 (这里为一个文件) 名称的字符串

transferUtility.Download( Path.Combine(Environment.SpecialFolder.ApplicationData,"file"), "bucketName", "key" );

上传文件

要将文件上传到 S3,请对 Transfer Utility 对象调用 Upload,并传递下列参数:

  • file – 要上传的文件的名称 (字符串)

  • bucketName – 用来存储文件的 S3 存储桶的字符串名称

transferUtility.Upload( Path.Combine(Environment.SpecialFolder.ApplicationData,"file"), "bucketName" );

以上代码假定目录 Environment.SpecialFolder.ApplicationData 中有一个文件。上传操作将自动对大文件使用 S3 的多分段上传功能以增强吞吐量。