Azure.Storage.Blobs 12.11.0-beta.1 Prefix Reserved

This is a prerelease version of Azure.Storage.Blobs.
Install-Package Azure.Storage.Blobs -Version 12.11.0-beta.1
dotnet add package Azure.Storage.Blobs --version 12.11.0-beta.1
<PackageReference Include="Azure.Storage.Blobs" Version="12.11.0-beta.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Azure.Storage.Blobs --version 12.11.0-beta.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Azure.Storage.Blobs, 12.11.0-beta.1"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Azure.Storage.Blobs as a Cake Addin
#addin nuget:?package=Azure.Storage.Blobs&version=12.11.0-beta.1&prerelease

// Install Azure.Storage.Blobs as a Cake Tool
#tool nuget:?package=Azure.Storage.Blobs&version=12.11.0-beta.1&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Azure Storage Blobs client library for .NET

Server Version: 2020-04-8, 2020-02-10, 2019-12-12, 2019-07-07, and 2019-02-02

Azure Blob storage is Microsoft's object storage solution for the cloud. Blob storage is optimized for storing massive amounts of unstructured data. Unstructured data is data that does not adhere to a particular data model or definition, such as text or binary data.

Source code | Package (NuGet) | API reference documentation | REST API documentation | Product documentation

Getting started

Install the package

Install the Azure Storage Blobs client library for .NET with NuGet:

dotnet add package Azure.Storage.Blobs

Prerequisites

You need an Azure subscription and a Storage Account to use this package.

To create a new Storage Account, you can use the Azure Portal, Azure PowerShell, or the Azure CLI. Here's an example using the Azure CLI:

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

Key concepts

Blob storage is designed for:

  • Serving images or documents directly to a browser.
  • Storing files for distributed access.
  • Streaming video and audio.
  • Writing to log files.
  • Storing data for backup and restore, disaster recovery, and archiving.
  • Storing data for analysis by an on-premises or Azure-hosted service.

Blob storage offers three types of resources:

  • The storage account used via BlobServiceClient
  • A container in the storage account used via BlobContainerClient
  • A blob in a container used via BlobClient

Learn more about options for authentication (including Connection Strings, Shared Key, Shared Key Signatures, Active Directory, and anonymous public access) in our samples.

Thread safety

We guarantee that all client instance methods are thread-safe and independent of each other (guideline). This ensures that the recommendation of reusing client instances is always safe, even across threads.

Additional concepts

Client options | Accessing the response | Long-running operations | Handling failures | Diagnostics | Mocking | Client lifetime

Examples

Uploading a 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);

Downloading a 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);

Enumerating blobs

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

Async APIs

We fully support both synchronous and asynchronous APIs.

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

Authenticating with Azure.Identity

The Azure Identity library provides easy Azure Active Directory support for authentication.

// 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());

Learn more about enabling Azure Active Directory for authentication with Azure Storage in our documentation and our samples.

Troubleshooting

All Blob service operations will throw a RequestFailedException on failure with helpful ErrorCodes. Many of these errors are recoverable.

// 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
}

Next steps

Get started with our Blob samples:

  1. Hello World: Upload, download, and list blobs (or asynchronously)
  2. Auth: Authenticate with connection strings, public access, shared keys, shared access signatures, and Azure Active Directory.

Contributing

See the Storage CONTRIBUTING.md for details on building, testing, and contributing to this library.

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit cla.microsoft.com.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

NuGet packages (308)

Showing the top 5 NuGet packages that depend on Azure.Storage.Blobs:

Package Downloads
Microsoft.Azure.WebJobs.Extensions.EventHubs

Microsoft Azure WebJobs SDK EventHubs Extension

AspNetCore.HealthChecks.AzureStorage

HealthChecks.AzureStorage is the health check package for Blobs, Tables and Queues.

NHibernateProfiler.Appender

NHibernate Profiler is a real-time visual debugger allowing a development team to gain valuable insight and perspective into their usage of NHibernate. The product is architected with input coming from many top industry leaders within the NHibernate community. Alerts are presented in a concise code-review manner indicating patterns of misuse by your application. To streamline your efforts to correct the misuse, we provide links to the problematic code section that triggered the alert. We provide a 30 day trial to download and see for yourself, the value you will receive with your purchase of NHibernate Profiler. This package contains the NHibernate Profiler's Appender only.

Azure.Storage.Files.DataLake

This client library enables working with the Microsoft Azure Storage Data Lake File service for storing binary and text data. For this release see notes - https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/storage/Azure.Storage.Files.DataLake/README.md and https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/storage/Azure.Storage.Files.DataLake/CHANGELOG.md in addition to the breaking changes https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/storage/Azure.Storage.Files.DataLake/BreakingChanges.txt Microsoft Azure Storage quickstarts and tutorials - https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction Microsoft Azure Storage REST API Reference - https://docs.microsoft.com/en-us/rest/api/storageservices/ REST API Reference for Data Lake - https://docs.microsoft.com/en-us/rest/api/storageservices/datalakestoragegen2/filesystem

Serilog.Sinks.AzureBlobStorage

Serilog event sink that writes to Azure Blob Storage over HTTP.

GitHub repositories (61)

Showing the top 5 popular GitHub repositories that depend on Azure.Storage.Blobs:

Repository Stars
dotnet/orleans
Orleans is a cross-platform framework for building distributed applications with .NET
abpframework/abp
Open Source Web Application Framework for ASP.NET Core
nopSolutions/nopCommerce
The most popular open-source eCommerce shopping cart solution based on ASP.NET Core
OrchardCMS/OrchardCore
Orchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.
MassTransit/MassTransit
Distributed Application Framework for .NET
Version Downloads Last updated
12.11.0-beta.1 2,312 11/4/2021
12.10.0 1,212,361 9/9/2021
12.10.0-beta.2 12,676 7/23/2021
12.10.0-beta.1 931 7/23/2021
12.9.1 2,304,617 6/23/2021
12.9.0 1,361,255 6/9/2021
12.9.0-beta.4 36,566 5/12/2021
12.9.0-beta.3 12,089 4/9/2021
12.9.0-beta.2 26,298 3/10/2021
12.9.0-beta.1 40,744 2/10/2021
12.8.4 806,794 5/21/2021
12.8.3 1,068,226 4/27/2021
12.8.2 15,963 4/27/2021
12.8.1 1,490,010 3/29/2021
12.8.0 4,459,749 1/12/2021
12.8.0-beta.1 25,462 12/7/2020
12.7.0 3,405,721 11/10/2020
12.7.0-preview.1 43,577 10/1/2020
12.6.0 4,779,302 8/31/2020
12.5.1 547,034 8/18/2020
12.5.0-preview.6 29,477 7/28/2020
12.5.0-preview.5 23,416 7/3/2020
12.5.0-preview.4 6,018 6/19/2020
12.5.0-preview.1 5,246 6/8/2020
12.4.4 3,304,198 6/5/2020
12.4.3 175,907 6/2/2020
12.4.2 1,236,875 5/6/2020
12.4.1 1,063,932 4/6/2020
12.4.0 749,132 3/12/2020
12.3.0 658,856 2/11/2020
12.2.0 734,266 1/10/2020
12.1.0 306,744 12/4/2019
12.0.0 799,861 10/31/2019
12.0.0-preview.4 4,449 10/10/2019
12.0.0-preview.3 5,201 9/10/2019
12.0.0-preview.2 2,604 8/6/2019
12.0.0-preview.1 1,748 7/3/2019
1.0.0-preview.1 3,751 5/7/2019