

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Caricamento di una directory utilizzando la classe.NET di alto livello TransferUtility
<a name="HLuploadDirDotNet"></a>

Puoi utilizzare la classe `TransferUtility` per caricare un'intera directory. Per impostazione predefinita, l'API carica solo i file nella posizione root della directory specificata. È tuttavia possibile specificare il caricamento ricorsivo dei file in tutte le sottodirectory. 

Per selezionare i file nella directory specificata in base ai criteri di filtro, specificare espressioni di filtro. Ad esempio, per caricare solo i file `PDF` da una directory, specifica l'espressione del filtro `"*.pdf"`. 

Quando si caricano file da una directory, non è possibile specificare i nomi delle chiavi per l'oggetto risultante. Amazon S3 crea i nomi delle chiavi utilizzando il percorso file originale. Supponiamo, ad esempio, di avere una la directory denominata `c:\myfolder` con la seguente struttura:

**Example**  

```
1. C:\myfolder
2.       \a.txt
3.       \b.pdf
4.       \media\               
5.              An.mp3
```

Quando effettui un caricamento in questa directory, Amazon S3 utilizza questi nomi della chiave dell'oggetto:

**Example**  

```
1. a.txt
2. b.pdf
3. media/An.mp3
```

**Example**  
Il seguente esempio di codice C\$1 consente di caricare una directory in un bucket Amazon S3. Mostra come utilizzare diversi overload `TransferUtility.UploadDirectory` per caricare la directory. Ciascuna chiamata successiva al caricamento sostituisce il caricamento precedente. Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [Getting Started with the AWS SDK for .NET nella AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .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);
            }
        }
    }
}
```