Поделиться через


Копирование большого двоичного объекта из URL-адреса исходного объекта с помощью Java

В этой статье показано, как скопировать большой двоичный объект из URL-адреса исходного объекта с помощью клиентской библиотеки служба хранилища Azure для Java. Большой двоичный объект можно скопировать из источника в той же учетной записи хранения, из источника в другой учетной записи хранения или из любого доступного объекта, полученного через HTTP-запрос GET по указанному URL-адресу.

Методы клиентской библиотеки, описанные в этой статье, используют операции Put Blob From URL и Put Block From URL REST API. Эти методы предпочтительны для сценариев копирования, в которых требуется переместить данные в учетную запись хранения и иметь URL-адрес исходного объекта. Операции копирования, в которых требуется асинхронное планирование, см. в статье "Копирование большого двоичного объекта с асинхронным планированием с помощью Java".

Необходимые компоненты

  • В этой статье предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Сведения о настройке проекта, включая установку пакетов, добавление import директив и создание авторизованного клиентского объекта, см. в статье "Начало работы с служба хранилища Azure и Java".
  • Механизм авторизации должен иметь разрешения на выполнение операции копирования. Дополнительные сведения см. в руководстве по авторизации для следующих операций REST API:

Сведения о копировании БОЛЬШИХ двоичных объектов из URL-адреса исходного объекта

Операция Put Blob From URL создает новый блочный BLOB-объект, в котором содержимое большого двоичного объекта считываются из заданного URL-адреса. Операция выполняется синхронно.

Источник может быть любым объектом, извлекаемым через стандартный HTTP-запрос GET по указанному URL-адресу. К ним относятся блочные BLOB-объекты, добавление больших двоичных объектов, страничные BLOB-объекты, моментальные снимки BLOB-объектов, версии BLOB-объектов или любой доступный объект внутри Или за пределами Azure.

Когда исходный объект является блочного BLOB-объекта, копируется все зафиксированное содержимое большого двоичного объекта. Однако список блоков не сохраняется, а незафиксированные блоки не копируются. Содержимое целевого большого двоичного объекта идентично исходному, но зафиксированный список блокировок не сохраняется.

Назначение всегда является блочного большого двоичного объекта, существующего блочного большого двоичного объекта или нового блочного большого двоичного объекта, созданного операцией. Содержимое существующего большого двоичного объекта перезаписывается с содержимым нового большого двоичного объекта.

Операция Put Blob From URL всегда копирует весь исходный большой двоичный объект. Копирование диапазона байтов или набора блоков не поддерживается. Чтобы выполнить частичные обновления содержимого блочного BLOB-объекта с помощью исходного URL-адреса, используйте API put Block From URL вместе с put Block List.

Дополнительные сведения об Put Blob From URL операции, включая ограничения размера BLOB-объектов и рекомендации по выставлению счетов, см. в статье Put Blob From URL-примечания.

Копирование большого двоичного объекта из URL-адреса исходного объекта

В этом разделе представлен обзор методов, предоставляемых клиентской библиотекой служба хранилища Azure java для выполнения операции копирования из URL-адреса исходного объекта.

Следующие методы обтекают операцию PUT BLOB-объектов из REST API URL-адреса и создают новый блочный BLOB-объект, в котором содержимое большого двоичного объекта считывается из заданного URL-адреса:

Эти методы предпочтительны для сценариев, в которых требуется переместить данные в учетную запись хранения и иметь URL-адрес исходного объекта.

Для больших объектов можно работать с отдельными блоками. В следующем методе выполняется оболочка операции PUT Block From URL REST API. Этот метод создает новый блок для фиксации в составе большого двоичного объекта, в котором содержимое считывается из исходного URL-адреса:

Копирование большого двоичного объекта из источника в Azure

Если вы копируете большой двоичный объект из источника в Azure, доступ к исходному BLOB-объекту можно авторизовать с помощью идентификатора Microsoft Entra, подписанного URL-адресом (SAS) или ключа учетной записи.

В следующем примере показан сценарий копирования из исходного большого двоичного объекта в Azure. Метод uploadFromUrl может при необходимости принять логический параметр, чтобы указать, следует ли перезаписать существующий большой двоичный объект, как показано в примере.

public void copyFromSourceInAzure(BlobClient sourceBlob, BlockBlobClient destinationBlob) {
    // Get the source blob URL and create the destination blob
    // set overwrite param to true if you want to overwrite an existing blob
    destinationBlob.uploadFromUrl(sourceBlob.getBlobUrl(), false);
}

Метод uploadFromUrlWithResponse также может принять параметр BlobUploadFromUrlOptions , чтобы указать дополнительные параметры операции.

Копирование большого двоичного объекта из внешнего источника

Вы можете выполнить операцию копирования для любого исходного объекта, который можно получить через HTTP-запрос GET по указанному URL-адресу, включая доступные объекты за пределами Azure. В следующем примере показано, как скопировать большой двоичный объект из URL-адреса объекта с доступом.

public void copyFromExternalSource(String sourceURL, BlockBlobClient destinationBlob) {
    // Create the destination blob from the source URL
    // set overwrite param to true if you want to overwrite an existing blob
    destinationBlob.uploadFromUrl(sourceURL, false);
}

Ресурсы

Дополнительные сведения о копировании больших двоичных объектов с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java см. в следующих ресурсах.

Операции REST API

Пакет SDK Azure для Java содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Java. Методы клиентской библиотеки, описанные в этой статье, используют следующие операции REST API:

Примеры кода

Ресурсы клиентской библиотеки