Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как скопировать BLOB из URL-адреса исходного объекта с помощью клиентской библиотеки Azure Storage для .NET. Вы можете скопировать блоб из источника в той же учетной записи хранения, из источника в другой учетной записи хранения или из любого доступного объекта, полученного через HTTP GET-запрос по указанному URL-адресу.
Методы клиентской библиотеки, описанные в этой статье, используют операции REST API Put Blob From URL и Put Block From URL. Эти методы предпочтительны для сценариев копирования, в которых требуется переместить данные в учетную запись хранения и иметь URL-адрес исходного объекта. Сведения о операциях копирования, в которых требуется асинхронное планирование, см. в статье "Копирование большого двоичного объекта с асинхронным планированием с помощью .NET".
Предварительные условия
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Последний SDK для .NET для вашей операционной системы. Обязательно получите пакет SDK, а не среду выполнения.
Настройка среды
Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для .NET. Ниже приведены шаги по установке пакета, добавлению using
директив и созданию авторизованного клиентского объекта. Дополнительные сведения см. в статье Начало работы с хранилищем BLOB-объектов Azure и .NET.
Установка пакетов
В каталоге проекта установите пакеты для клиентских библиотек Хранилище BLOB-объектов Azure и удостоверений Azure с помощью dotnet add package
команды. Пакет Azure.Identity необходим для безпарольных подключений к службам Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Добавьте директивы using
.
Добавьте эти using
директивы в начало файла кода:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Для некоторых примеров кода в этой статье могут потребоваться дополнительные using
директивы.
Создание клиентского объекта
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient. В следующем примере показано, как создать клиентский объект с помощью DefaultAzureCredential
авторизации:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Вы можете зарегистрировать клиент службы для внедрения зависимостей в приложении .NET.
Вы также можете создавать клиентские объекты для определенных контейнеров или больших двоичных объектов. Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.
Авторизация
Механизм авторизации должен иметь необходимые разрешения для выполнения операции копирования. Для авторизации с помощью идентификатора Microsoft Entra (рекомендуется), требуется встроенный участник данных хранилища BLOB-объектов хранилища ролей или более поздней версии. Дополнительные сведения см. в руководстве по авторизации для Загрузка блоба из URL-адреса (REST API) или Загрузка блока из URL-адреса (REST API).
Сведения о копировании БОЛЬШИХ двоичных объектов из URL-адреса исходного объекта
Операция Put Blob From URL
создает новый блочный BLOB-объект, в котором содержимое большого двоичного объекта считываются из заданного URL-адреса. Операция выполняется синхронно.
Источник может быть любым объектом, извлекаемым через стандартный HTTP-запрос GET по указанному URL-адресу. К ним относятся блочные BLOB-объекты, добавочные BLOB-объекты, страничные BLOB-объекты, моментальные снимки BLOB-объектов, версии BLOB-объектов или любой доступный объект внутри или за пределами Azure.
Когда исходный объект является блочным двоичным объектом (BLOB), копируется все зафиксированное содержимое. Однако список блоков не сохраняется, а незафиксированные блоки не копируются. Содержимое целевого объекта BLOB идентично исходному, но зафиксированный список блоков не сохраняется.
Назначением всегда является либо существующий блочный большой двоичный объект, либо новый блочный большой двоичный объект, созданный операцией. Содержимое существующего объекта BLOB перезаписывается содержимым нового объекта BLOB.
Операция Put Blob From URL
всегда копирует весь исходный объект BLOB. Копирование диапазона байтов или набора блоков не поддерживается. Чтобы выполнить частичные обновления содержимого block blob с помощью исходного URL-адреса, используйте Put Block From URL API вместе с Put Block List.
Дополнительные сведения об Put Blob From URL
операции, включая ограничения размера BLOB-объектов и рекомендации по выставлению счетов, см. в статье Put Blob From URL-примечания.
Копировать blob из URL-источника объекта
В этом разделе представлен обзор методов, предоставляемых клиентской библиотекой служба хранилища Azure для .NET для выполнения операции копирования из URL-адреса исходного объекта.
Следующие методы обрабатывают операцию REST API 'Put Blob From URL' и создают новый блочный blob, в котором содержимое извлекается из указанного URL-адреса.
Эти методы предпочтительны для сценариев, в которых требуется переместить данные в учетную запись хранения и иметь URL-адрес исходного объекта.
Для больших объектов можно работать с отдельными блоками. Следующие методы окружают операцию Put Block From URL REST API. Эти методы создают новый блок для добавления в блоб, содержимое которого считывается из исходного URL-адреса:
Скопируйте большой двоичный объект из источника внутри Azure
Если вы копируете BLOB из источника в Azure, доступ к исходному BLOB-объекту можно авторизовать с помощью Microsoft Entra ID, подписанного URL-адреса (SAS) или ключа учетной записи.
В следующем примере показан сценарий копирования из исходного блоба в среде Azure. Метод SyncUploadFromUriAsync может при необходимости принять логический параметр, чтобы указать, следует ли перезаписать существующий большой двоичный объект, как показано в примере. Параметр overwrite
по умолчанию — false.
//-------------------------------------------------
// Copy a blob from the same storage account
//-------------------------------------------------
public static async Task CopyWithinStorageAccountAsync(
BlobClient sourceBlob,
BlockBlobClient destinationBlob)
{
// Get the source blob URI and create the destination blob
// overwrite param defaults to false
await destinationBlob.SyncUploadFromUriAsync(sourceBlob.Uri/*, overwrite: false*/);
}
Метод SyncUploadFromUriAsync также может принимать параметр BlobSyncUploadFromUriOptions , чтобы указать дополнительные параметры операции.
Копирование большого двоичного объекта из источника за пределами Azure
Вы можете выполнить операцию копирования для любого исходного объекта, который можно получить через HTTP-запрос GET по указанному URL-адресу, включая доступные объекты за пределами Azure. В следующем примере показано, как скопировать блоб из доступного URL-адреса исходного объекта.
//-------------------------------------------------
// Copy a blob from an external source
//-------------------------------------------------
public static async Task CopyFromExternalSourceAsync(
string sourceLocation,
BlockBlobClient destinationBlob)
{
Uri sourceUri = new(sourceLocation);
// Create the destination blob from the source URL
// overwrite param defaults to false
await destinationBlob.SyncUploadFromUriAsync(sourceUri/*, overwrite: false*/);
}
Ресурсы
Дополнительные сведения о копировании больших двоичных объектов с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для .NET см. в следующих ресурсах.
Примеры кода
Операции REST API
Пакет SDK Azure для .NET содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы .NET. Методы клиентской библиотеки, описанные в этой статье, используют следующие операции REST API:
- Блоб по URL-адресу (REST API)
- Поставить блокировку из URL-адреса (REST API)
Ресурсы клиентской библиотеки
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для .NET. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения .NET.