Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Chargement d'un répertoire à l'aide du haut niveau. NET TransferUtility classe
Vous pouvez utiliser la classe TransferUtility
pour charger un répertoire entier. Par défaut, le API télécharge uniquement les fichiers situés à la racine du répertoire spécifié. Toutefois, vous pouvez spécifier de charger les fichiers de manière récursive dans tous les sous-répertoires.
Indiquez des expressions de filtre pour sélectionner des fichiers dans le répertoire spécifié selon des critères de filtrage. Par exemple, pour ne charger que les fichiers .pdf d'un répertoire, spécifiez l'expression de filtre "*.pdf"
.
Quand vous chargez des données depuis un répertoire, vous ne spécifiez pas les noms de clé pour les objets résultants. Amazon S3 génère les noms de clé à l'aide du chemin du fichier d'origine. Par exemple, si vous avez un répertoire appelé c:\myfolder
avec la structure suivante :
C:\myfolder \a.txt \b.pdf \media\ An.mp3
Lorsque vous chargez ce répertoire, Amazon S3 utilise les noms de clé suivants :
a.txt b.pdf media/An.mp3
L'exemple C# suivant charge un répertoire dans un compartiment Amazon S3. Il montre comment utiliser différentes surcharges TransferUtility.UploadDirectory
pour charger le répertoire. Chaque appel de chargement successif remplace le chargement précédent. Pour plus d'informations sur la configuration et l'exécution des exemples de code, consultez Getting Started with the AWS SDK for. NETdans le AWS SDKfour. NETGuide du développeur.
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); } } } }