

适用于 Xamarin 的 AWS 移动 SDK 现已包含在。 适用于 .NET 的 AWS SDK本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 S3 Transfer Utility
<a name="s3-integration-transferutility"></a>

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

## 初始化 TransferUtility
<a name="initialize-the-transferutility"></a>

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

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

## （可选）配置 TransferUtility
<a name="optional-configure-the-transferutility"></a>

有三个可选属性可以配置：
+  **ConcurrentServiceRequests**-确定文件将使用多少活动线程或并发异步 Web 请求 upload/download 的数量。默认值是 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);
```

## 下载文件
<a name="download-a-file"></a>

要从 S3 下载文件，请对 Transfer Utility 对象调用 `Download`，并传递下列参数：
+  `file` – 要下载的文件的名称 (字符串)
+  `bucketName` – 要从中下载文件的 S3 存储桶的字符串名称
+  `key` – 代表要下载的 S3 对象 (这里为一个文件) 名称的字符串

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

## 上传文件
<a name="upload-a-file"></a>

要将文件上传到 S3，请对 Transfer Utility 对象调用 `Upload`，并传递下列参数：
+  `file` – 要上传的文件的名称 (字符串)
+  `bucketName` – 用来存储文件的 S3 存储桶的字符串名称

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

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