Compartir por


Copiar un blob desde una dirección URL de objeto de origen con Java

En este artículo se muestra cómo copiar un blob de una dirección URL de objeto de origen mediante la biblioteca cliente de Azure Storage para Java. Puede copiar un blob desde un origen dentro de la misma cuenta de almacenamiento, desde un origen en una cuenta de almacenamiento diferente o desde cualquier objeto accesible recuperado a través de una solicitud HTTP GET en una dirección URL determinada.

Los métodos de biblioteca cliente descritos en este artículo usan las operaciones de la API de REST Put Blob From URL y Put Block From URL. Estos métodos se prefieren para copiar escenarios en los que desee mover datos a una cuenta de almacenamiento y tener una dirección URL para el objeto de origen. Para las operaciones de copia en las que desee programar de forma asincrónica, consulte Copiar un blob con programación asincrónica mediante Java.

Requisitos previos

  • En este artículo se supone que ya tiene un proyecto configurado para trabajar con la biblioteca cliente de Azure Blob Storage para Java. Para obtener información sobre cómo configurar el proyecto, incluida la instalación de paquetes, la adición de directivas de import y la autorización de un objeto de cliente, consulte Introducción a Azure Storage y Java.
  • El mecanismo de autorización debe tener permisos para realizar una operación de copia. Para obtener más información, consulte la guía de autorización para las siguientes operaciones de la API de REST:

Acerca de copiar blobs desde una dirección URL de objeto de origen

La operación Put Blob From URL crea un nuevo blob en bloques donde se lee el contenido del blob desde una dirección URL determinada. La operación se completa sincrónicamente.

El origen puede ser cualquier objeto recuperable a través de una solicitud HTTP GET estándar en la dirección URL especificada. Esto incluye blobs en bloques, blobs anexos, blobs en páginas, instantáneas de blobs, versiones de blobs o cualquier objeto accesible dentro o fuera de Azure.

Cuando el objeto de origen sea un blob en bloques, se copiará todo el contenido del blob confirmado. Sin embargo, la lista de bloques no se conserva y no se copian los bloques sin confirmar. El contenido del blob de destino es idéntico al contenido del origen, pero la lista de bloques confirmada no se conserva.

El destino siempre es un blob en bloques, ya sea un blob en bloques existente o un nuevo blob en bloques creado por la operación. El contenido de un blob existente se sobrescribe con el contenido del nuevo blob.

La operación Put Blob From URL siempre copia todo el blob de origen. No se admite la copia de un intervalo de bytes o un conjunto de bloques. Para realizar actualizaciones parciales en el contenido de un blob en bloques mediante una dirección URL de origen, use la API Put Block From URL junto con Put Block List.

Para obtener más información sobre la operación Put Blob From URL, incluyendo las limitaciones de tamaño de blob y las consideraciones de facturación, consulte Comentarios de Put Blob From URL.

Copiar un blob desde una dirección URL de objeto de origen

En esta sección se proporciona información general sobre los métodos proporcionados por la biblioteca cliente de Azure Storage para Java para realizar una operación de copia desde una dirección URL de objeto de origen.

Los métodos siguientes encapsulan la operación de API de REST Put Blob From URL y crean un nuevo blob en bloques donde se lee el contenido del blob desde una dirección URL determinada:

Estos métodos se prefieren para escenarios en los que desee mover datos a una cuenta de almacenamiento y tener una dirección URL para el objeto de origen.

En el caso de objetos grandes, puede trabajar con bloques individuales. el método siguiente encapsula la operación de la API de REST Put Block From URL. Este método crea un nuevo bloque que se confirmará como parte de un blob donde el contenido se leerá desde una dirección URL de origen:

Copiar un blob desde un origen dentro de Azure

Si está copiando un blob desde un origen dentro de Azure, el acceso al blob de origen se puede autorizar a través de Microsoft Entra ID, una firma de acceso compartido (SAS) o una clave de cuenta.

El siguiente ejemplo muestra un escenario para copiar desde un blob de origen dentro de Azure. El método uploadFromUrl puede aceptar opcionalmente un parámetro booleano para indicar si se debería sobrescribir un blob existente, tal y como se muestra en el ejemplo.

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

El método uploadFromUrlWithResponse también puede aceptar un parámetro BlobUploadFromUrlOptions para especificar más opciones para la operación.

Copia de un blob desde un origen externo

Puede realizar una operación de copia en cualquier objeto de origen que se pueda recuperar a través de solicitudes HTTP GET en una dirección URL determinada, incluyendo los objetos accesibles de fuera de Azure. En el ejemplo siguiente se muestra un escenario para copiar un blob desde una dirección URL de objeto de origen accesible.

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

Recursos

Para obtener más información sobre cómo copiar blobs usando la biblioteca cliente de Azure Blob Storage para Java, consulte los siguientes recursos.

Operaciones de API REST

El SDK de Azure para Java contiene bibliotecas que se crean a partir de la API REST de Azure, lo que le permite interactuar con las operaciones de API REST a través de paradigmas conocidos de Java. Los métodos de biblioteca cliente descritos en este artículo usan las siguientes operaciones de la API de REST:

Ejemplos de código

Recursos de la biblioteca cliente