メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

ディレクトリのアップロード

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); } } } }