Condividi tramite


Libreria client BLOB di Archiviazione di Azure per .NET - versione 12.15.1

Versione server: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12, 2020-04-08, 2020-02-10, 2019-12-12, 2019-07-07 e 2019-02-02

L'archivio BLOB di Azure è la soluzione di archiviazione di oggetti Microsoft per il cloud. L'archiviazione BLOB è ottimizzata per l'archiviazione di grandi quantità di dati non strutturati. I dati non strutturati sono dati che non seguono una definizione o un modello di dati specifico, ad esempio dati di testo o binari.

Codice | sorgente Pacchetto (NuGet) | Documentazione | di riferimento sulle API Documentazione | dell'API RESTDocumentazione del prodotto

Introduzione

Installare il pacchetto

Installare la libreria client dei BLOB di Archiviazione di Azure per .NET con NuGet:

dotnet add package Azure.Storage.Blobs

Prerequisiti

Per usare questo pacchetto sono necessari una sottoscrizione di Azure e un account di archiviazione .

Per creare un nuovo account di archiviazione, è possibile usare il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure. Di seguito è riportato un esempio basato sull'uso dell'interfaccia della riga di comando di Azure:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

Autenticare il client

Per interagire con il servizio di archiviazione BLOB di Azure, è necessario creare un'istanza della classe BlobServiceClient. La libreria di identità di Azure semplifica l'aggiunta del supporto di Azure Active Directory per l'autenticazione dei client Azure SDK con i servizi di Azure corrispondenti.

// Create a BlobServiceClient that will authenticate through Active Directory
Uri accountUri = new Uri("https://MYSTORAGEACCOUNT.blob.core.windows.net/");
BlobServiceClient client = new BlobServiceClient(accountUri, new DefaultAzureCredential());

Altre informazioni sull'abilitazione di Azure Active Directory per l'autenticazione con Archiviazione di Azure sono disponibili nella documentazione e negli esempi.

Concetti chiave

L'archiviazione BLOB è progettata per:

  • Invio di immagini o documenti direttamente in un browser.
  • Archiviazione di file per l'accesso distribuito.
  • Streaming di audio e video.
  • Scrittura in file di log.
  • Archiviazione di dati per backup e ripristino, ripristino di emergenza e archiviazione.
  • Archiviazione di dati a scopo di analisi da parte di un servizio locale o ospitato in Azure.

L’archiviazione BLOB offre tre tipi di risorse:

  • L'account di archiviazione usato tramiteBlobServiceClient
  • Contenitore nell'account di archiviazione usato tramiteBlobContainerClient
  • BLOB in un contenitore usato tramiteBlobClient

Altre informazioni sulle opzioni per l'autenticazione (incluse stringhe di connessione, chiave condivisa, firme di chiave condivisa, Active Directory e accesso pubblico anonimo)negli esempi.

Thread safety

Microsoft garantisce che tutti i metodi di istanza client siano thread-safe e indipendenti l'uno dall'altro (linee guida). Ciò garantisce che la raccomandazione di riutilizzare le istanze client sia sempre sicura, anche tra thread.

Concetti aggiuntivi

Opzioni | client Accesso alla risposta | Operazioni | a esecuzione prolungataGestione degli errori | Diagnostica | Beffardo | Durata del client

Esempio

Caricamento di un BLOB

// Get a connection string to our Azure Storage account.  You can
// obtain your connection string from the Azure Portal (click
// Access Keys under Settings in the Portal Storage account blade)
// or using the Azure CLI with:
//
//     az storage account show-connection-string --name <account_name> --resource-group <resource_group>
//
// And you can provide the connection string to your application
// using an environment variable.

string connectionString = "<connection_string>";
string containerName = "sample-container";
string blobName = "sample-blob";
string filePath = "sample-file";

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
container.Create();

// Get a reference to a blob named "sample-file" in a container named "sample-container"
BlobClient blob = container.GetBlobClient(blobName);

// Upload local file
blob.Upload(filePath);

Download di un BLOB

// Get a temporary path on disk where we can download the file
string downloadPath = "hello.jpg";

// Download the public blob at https://aka.ms/bloburl
new BlobClient(new Uri("https://aka.ms/bloburl")).DownloadTo(downloadPath);

Enumerazione di BLOB

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";
string filePath = "hello.jpg";

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
container.Create();

// Upload a few blobs so we have something to list
container.UploadBlob("first", File.OpenRead(filePath));
container.UploadBlob("second", File.OpenRead(filePath));
container.UploadBlob("third", File.OpenRead(filePath));

// Print out all the blob names
foreach (BlobItem blob in container.GetBlobs())
{
    Console.WriteLine(blob.Name);
}

API asincrone

Sono supportate completamente le API sincrone e asincrone.

// Get a temporary path on disk where we can download the file
string downloadPath = "hello.jpg";

// Download the public blob at https://aka.ms/bloburl
await new BlobClient(new Uri("https://aka.ms/bloburl")).DownloadToAsync(downloadPath);

Risoluzione dei problemi

Tutte le operazioni del servizio BLOB genereranno un'eccezione RequestFailedException in caso di errore con s utileErrorCode. Molti di questi errori sono ripristinabili.

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Try to delete a container named "sample-container" and avoid any potential race conditions
// that might arise by checking if the container is already deleted or is in the process
// of being deleted.
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

try
{
    container.Delete();
}
catch (RequestFailedException ex)
    when (ex.ErrorCode == BlobErrorCode.ContainerBeingDeleted ||
          ex.ErrorCode == BlobErrorCode.ContainerNotFound)
{
    // Ignore any errors if the container being deleted or if it has already been deleted
}

Passaggi successivi

Introduzione agli esempi di BLOB:

  1. Hello World: caricare, scaricare ed elencare BLOB (o in modo asincrono)
  2. Autenticazione: eseguire l'autenticazione con stringhe di connessione, accesso pubblico, chiavi condivise, firme di accesso condiviso e Azure Active Directory.

Contributo

Per informazioni dettagliate sulla compilazione, il test e il contributo a questa libreria, vedere Archiviazione CONTRIBUTING.md .

In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, visitare cla.microsoft.com.

Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento Open Source di Microsoft) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.

Impression