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 的多分段上传功能以增强吞吐量。