Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

上传目录

您也可以使用 TransferUtility 类上传整个目录。默认情况下,Amazon S3 仅上传位于指定目录的根目录中的文件。但是,您可以指定以递归方式上传所有子目录中的文件。

您也可以指定筛选表达式,以便在指定的目录中根据某些筛选条件选择文件。例如,要从目录中仅上传 .pdf 文件,您需要指定“*.pdf”筛选表达式。

从目录中上传文件时,您不能指定对象的键名称。它是由目录中文件的位置和名称构成的。例如,假设您拥有目录 c:\myfolder,并且它使用以下结构:

Copy
C:\myfolder \a.txt \b.pdf \media\ An.mp3

上传此目录时,Amazon S3 将使用以下键名称:

Copy
a.txt b.pdf media/An.mp3

以下任务将引导您使用高级别的 .NET 类来上传目录。

高级别 API 目录上传过程

1

通过提供 AWS 凭证创建 TransferUtility 类的实例。

2

执行 TransferUtility.UploadDirectory 重载之一。

以下 C# 代码示例演示了上述任务。

Copy
TransferUtility utility = new TransferUtility(); utility.UploadDirectory(directoryPath, existingBucketName);

以下 C# 代码示例将一个目录上传到 Amazon S3 存储桶。该示例演示了如何使用各种 TransferUtility.UploadDirectory 重载上传目录;每个后续的上传调用都将替换以前的上传。有关如何创建和测试有效示例的说明,请参阅 运行 Amazon S3 .NET 代码示例

Copy
using System; using System.IO; using Amazon.S3; using Amazon.S3.Transfer; namespace s3.amazon.com.docsamples { class UploadDirectoryMPUHighLevelAPI { static string existingBucketName = "*** Provide bucket name ***"; static string directoryPath = "*** Provide directory name ***"; static void Main(string[] args) { try { TransferUtility directoryTransferUtility = new TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.USEast1)); // 1. Upload a directory. directoryTransferUtility.UploadDirectory(directoryPath, existingBucketName); Console.WriteLine("Upload statement 1 completed"); // 2. Upload only the .txt files from a directory. // Also, search recursively. directoryTransferUtility.UploadDirectory( directoryPath, existingBucketName, "*.txt", SearchOption.AllDirectories); Console.WriteLine("Upload statement 2 completed"); // 3. Same as 2 and some optional configuration // Search recursively for .txt files to upload). TransferUtilityUploadDirectoryRequest request = new TransferUtilityUploadDirectoryRequest { BucketName = existingBucketName, Directory = directoryPath, SearchOption = SearchOption.AllDirectories, SearchPattern = "*.txt" }; directoryTransferUtility.UploadDirectory(request); Console.WriteLine("Upload statement 3 completed"); } catch (AmazonS3Exception e) { Console.WriteLine(e.Message, e.InnerException); } } } }