Pengunggahan sebuah direktori menggunakan kelas TransferUtility .NET tingkat tinggi - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pengunggahan sebuah direktori menggunakan kelas TransferUtility .NET tingkat tinggi

Anda dapat menggunakan kelas TransferUtility untuk mengunggah sebuah direktori secara keseluruhan. Secara default, API hanya mengunggah file di dalam root direktori yang ditentukan. Namun, Anda dapat menentukan pengunggahan file secara rekursif di semua sub direktori.

Untuk memilih file di direktori tertentu berdasarkan kriteria pemfilteran, tentukan ekspresi pemfilterannya. Misalnya, untuk mengunggah hanya PDF file dari direktori, tentukan ekspresi "*.pdf" filter.

Saat mengunggah file dari sebuah direktori, Anda tidak perlu menentukan nama kunci untuk objek yang dihasilkan. Amazon S3 membangun nama kunci menggunakan jalur file asli. Misalnya, asumsikan bahwa Anda memiliki sebuah direktori yang disebut sebagai c:\myfolder dengan struktur berikut:

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

Saat Anda mengunggah direktori ini, Amazon S3 menggunakan nama kunci berikut:

a.txt b.pdf media/An.mp3

Contoh C# berikut mengunggah sebuah direktori ke bucket Amazon S3. Contoh ini menunjukkan cara menggunakan berbagai kelebihan muatan TransferUtility.UploadDirectory untuk mengunggah direktori. Setiap panggilan berurutan untuk unggahan menggantikan unggahan sebelumnya. Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Memulai SDK for .NET di AWSAWS SDK for .NET Developer Guide.

using Amazon; using Amazon.S3; using Amazon.S3.Transfer; using System; using System.IO; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class UploadDirMPUHighLevelAPITest { private const string existingBucketName = "*** bucket name ***"; private const string directoryPath = @"*** directory path ***"; // The example uploads only .txt files. private const string wildCard = "*.txt"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; static void Main() { s3Client = new AmazonS3Client(bucketRegion); UploadDirAsync().Wait(); } private static async Task UploadDirAsync() { try { var directoryTransferUtility = new TransferUtility(s3Client); // 1. Upload a directory. await directoryTransferUtility.UploadDirectoryAsync(directoryPath, existingBucketName); Console.WriteLine("Upload statement 1 completed"); // 2. Upload only the .txt files from a directory // and search recursively. await directoryTransferUtility.UploadDirectoryAsync( directoryPath, existingBucketName, wildCard, SearchOption.AllDirectories); Console.WriteLine("Upload statement 2 completed"); // 3. The same as Step 2 and some optional configuration. // Search recursively for .txt files to upload. var request = new TransferUtilityUploadDirectoryRequest { BucketName = existingBucketName, Directory = directoryPath, SearchOption = SearchOption.AllDirectories, SearchPattern = wildCard }; await directoryTransferUtility.UploadDirectoryAsync(request); Console.WriteLine("Upload statement 3 completed"); } catch (AmazonS3Exception e) { Console.WriteLine( "Error encountered ***. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine( "Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }