Клиентская библиотека BLOB-объектов службы хранилища Azure для .NET версии 12.15.1
Версия сервера: 12.02.2021, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12, 2020-04-08, 2020-02-10, 2019-12-12, 2019-07-07 и 2019-02-02-02
Хранилище BLOB-объектов Azure — это решение корпорации Майкрософт для хранения объектов в облаке. Хранилище BLOB-объектов оптимизировано для хранения огромных объемов неструктурированных данных. Неструктурированные данные — это данные, которые не соответствуют определенной модели данных или определению, например текстовых или двоичных данных.
Исходный код | Пакет (NuGet) | Справочная документация по | API Документация по | REST API Документация по продукту
Начало работы
Установка пакета
Установите клиентую библиотеку BLOB-объектов службы хранилища Azure для .NET с помощью NuGet:
dotnet add package Azure.Storage.Blobs
Предварительные требования
Для использования этого пакета вам потребуется подписка Azure и учетная запись хранения .
Чтобы создать учетную запись хранения, можно использовать портал Azure, Azure PowerShell или Azure CLI. Ниже приведен пример с использованием Azure CLI:
az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS
Аутентификация клиента
Чтобы взаимодействовать со службой хранилища BLOB-объектов Azure, необходимо создать экземпляр класса BlobServiceClient. Библиотека удостоверений Azure позволяет легко добавить поддержку Azure Active Directory для проверки подлинности клиентов пакета SDK Azure с помощью соответствующих служб Azure.
// 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());
Дополнительные сведения о включении Azure Active Directory для проверки подлинности в службе хранилища Azure см. в нашей документации и в примерах.
Основные понятия
Хранилище BLOB-объектов предназначено для следующих задач:
- Обслуживание изображений или документов непосредственно в браузере.
- Хранение файлов для распределенного доступа.
- Потоковая передача видео и звука.
- Запись в файлы журнала.
- Хранение резервных копий и восстановление данных, аварийное восстановление и архивация.
- Хранение данных для анализа локальной службой или службой, размещенной в Azure.
В хранилище BLOB-объектов предлагается три типа ресурсов:
- Учетная запись хранения, используемая через
BlobServiceClient
- Контейнер в учетной записи хранения, используемой с помощью
BlobContainerClient
- Большой двоичный объект в контейнере, используемый с помощью
BlobClient
Дополнительные сведения о вариантах проверки подлинности (включая строки подключения, общий ключ, подписанные url-адреса, Active Directory и анонимный общий доступ)см. в наших примерах.
Потокобезопасность
Мы гарантируем, что все методы экземпляра клиента являются потокобезопасны и независимы друг от друга (руководство). Это гарантирует, что рекомендация по повторному использованию экземпляров клиента всегда будет безопасной, даже в разных потоках.
Дополнительные понятия
Параметры | клиента Доступ к ответу | Длительные операции | Обработка сбоев | Диагностики | Насмешливый | Время существования клиента
Примеры
Отправка большого двоичного объекта
// 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);
Скачивание 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);
Перечисление больших двоичных объектов
// 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
Мы полностью поддерживаем синхронные и асинхронные API.
// 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);
Устранение неполадок
Все операции службы BLOB-объектов будут вызывать исключение RequestFailedException при сбое с полезнымиErrorCode
s. Многие из этих ошибок можно исправить.
// 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
}
Дальнейшие действия
Начало работы с примерами blob-объектов:
- Hello World: отправка, скачивание и перечисление больших двоичных объектов (или асинхронно).
- Проверка подлинности. Проверка подлинности с помощью строк подключения, открытого доступа, общих ключей, подписанных URL-адресов и Azure Active Directory.
Участие
Дополнительные сведения о создании, тестировании и участии в этой библиотеке см. в CONTRIBUTING.md хранилища.
На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см. на странице cla.microsoft.com.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к [email protected] с любыми дополнительными вопросами или комментариями.