Freigeben über


Kopieren eines Blobs über eine Quellobjekt-URL mit Java

In diesem Artikel wird gezeigt, wie Sie ein Blob über eine Quellobjekt-URL mithilfe der Azure Storage-Clientbibliothek für Java kopieren. Sie können ein Blob aus einer Quelle innerhalb desselben Speicherkontos, aus einer Quelle in einem anderen Speicherkonto oder aus einem beliebigen zugänglichen Objekt kopieren, das über eine HTTP GET-Anforderung für eine bestimmte URL abgerufen wird.

Die in diesem Artikel behandelten Clientbibliotheksmethoden verwenden die REST-API-Vorgänge Put Blob From URL und Put Block From URL. Diese Methoden werden bei Kopierszenarien bevorzugt, in denen Sie Daten in ein Speicherkonto verschieben möchten und eine URL für das Quellobjekt haben. Informationen zu Kopiervorgängen mit asynchroner Planung finden Sie unter Kopieren eines Blobs mit asynchroner Planung mithilfe von Java.

Voraussetzungen

Erstellen Ihrer Umgebung

Wenn Sie nicht über ein vorhandenes Projekt verfügen, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit der Azure Blob Storage-Clientbibliothek für Java einrichten. Weitere Informationen finden Sie unter Erste Schritte mit Azure Blob Storage mit Java.

Um die Codebeispiele in diesem Artikel zu verwenden, führen Sie die folgenden Schritte zum Einrichten Ihres Projekts aus.

Hinweis

In diesem Artikel wird das Maven-Buildtool verwendet, um den Beispielcode zu erstellen und auszuführen. Andere Buildtools (beispielsweise Gradle) können ebenfalls mit dem Azure SDK für Java verwendet werden.

Installieren von Paketen

Öffnen Sie die Datei pom.xml in Ihrem Text-Editor. Installieren Sie die Pakete durch Einbeziehen der BOM-Datei oder Einbeziehen einer direkten Abhängigkeit.

Hinzufügen von Importanweisungen

Fügen Sie die folgenden import -Anweisungen ein:

import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;

Autorisierung

Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Ausführen eines Kopiervorgangs verfügen. Für die Autorisierung mit Microsoft Entra ID (empfohlen) benötigen Sie mindestens die integrierte Azure RBAC-Rolle Mitwirkender an Storage-Blobdaten. Weitere Informationen finden Sie in den Autorisierungsanleitungen für Put Blob From URL (REST API) oder Put Block From URL (REST API).

Erstellen eines Clientobjekts

Um eine App mit Blob Storage zu verbinden, erstellen Sie eine Instanz von BlobServiceClient.

Im folgenden Beispiel wird BlobServiceClientBuilder verwendet, um ein BlobServiceClient-Objekt mithilfe von DefaultAzureCredential zu erstellen, und zeigt, wie Container- und Blob-Clients erstellt werden, falls erforderlich:

// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint("https://<storage-account-name>.blob.core.windows.net/")
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
        .getBlobContainerClient("<container-name>");

// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
        .getBlobClient("<blob-name>");

Weitere Informationen zum Erstellen und Verwalten von Clientobjekten finden Sie unter Erstellen und Verwalten von Clientobjekten, die mit Datenressourcen interagieren.

Informationen zum Kopieren von Blobs über eine Quellobjekt-URL

Der Vorgang Put Blob From URL erstellt ein neues Blockblob, in dem der Inhalt des Blobs über eine bestimmte URL gelesen wird. Der Vorgang wird synchron ausgeführt.

Die Quelle kann ein beliebiges Objekt sein, das über eine HTTP GET-Standardanforderung für die angegebene URL abgerufen werden kann. Dies umfasst Blockblobs, Anfügeblobs, Seitenblobs, Blobmomentaufnahmen, Blobversionen und alle zugänglichen Objekte innerhalb oder außerhalb von Azure.

Wenn das Quellobjekt ein Blockblob ist, wird der gesamte committete Blobinhalt kopiert. Die Blockliste wird jedoch nicht beibehalten, und Blöcke ohne Commit werden nicht kopiert. Der Inhalt des Zielblobs ist identisch mit dem Inhalt der Quelle, aber die committete Blockliste wird nicht beibehalten.

Das Ziel ist immer ein Blockblob, entweder ein vorhandenes Blockblob oder ein neues Blockblob, das durch den Vorgang erstellt wurde. Der Inhalt eines vorhandenen Blobs wird mit dem Inhalt des neuen Blobs überschrieben.

Der Vorgang Put Blob From URL kopiert immer das gesamte Quellblob. Das Kopieren eines Bytebereichs oder einer Gruppe von Blöcken wird nicht unterstützt. Um Teilaktualisierungen des Inhalts eines Blockblobs mithilfe einer Quell-URL vorzunehmen, verwenden Sie die API Put Block From URL zusammen mit Put Block List.

Weitere Informationen zum Vorgang Put Blob From URL, einschließlich Blobgrößenbeschränkungen und Abrechnungsüberlegungen, finden Sie unter Hinweise.

Kopieren eines Blobs über eine Quellobjekt-URL

Dieser Abschnitt enthält einen Überblick über die Methoden, die von der Azure Storage-Clientbibliothek für Java bereitgestellt werden, um einen Kopiervorgang über eine Quellobjekt-URL auszuführen.

Die folgenden Methoden umschließen den REST-API-Vorgang Put Blob From URL, und sie erstellen ein neues Blockblob, in dem der Inhalt des Blobs über eine bestimmte URL gelesen wird:

Diese Methoden werden bei Szenarien bevorzugt, in denen Sie Daten in ein Speicherkonto verschieben möchten und eine URL für das Quellobjekt haben.

Bei großen Objekten können Sie mit einzelnen Blöcken arbeiten. Die folgende Methode umschließt den REST-API-Vorgang Put Block From URL. Mit dieser Methode wird ein neuer Block erstellt, der als Teil eines Blobs committet werden soll, in dem der Inhalt über eine Quell-URL gelesen wird:

Kopieren eines Blobs aus einer Quelle in Azure

Wenn Sie ein Blob aus einer Quelle in Azure kopieren, kann der Zugriff auf das Quellblob über Microsoft Entra ID, eine SAS (Shared Access Signature) oder einen Kontoschlüssel autorisiert werden.

Im folgenden Beispiel wird ein Szenario zum Kopieren aus einem Quellblob innerhalb von Azure gezeigt. Die Methode uploadFromUrl kann optional einen booleschen Parameter akzeptieren, um anzugeben, ob ein vorhandenes Blob überschrieben werden sollte, wie im Beispiel gezeigt wird.

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

Die Methode uploadFromUrlWithResponse kann auch den Parameter BlobUploadFromUrlOptions akzeptieren, um weitere Optionen für den Vorgang anzugeben.

Kopieren eines Blobs aus einer externen Quelle

Sie können einen Kopiervorgang für jedes beliebige Quellobjekt ausführen, das über eine HTTP GET-Anforderung für eine bestimmte URL abgerufen werden kann, – einschließlich zugänglicher Objekte außerhalb von Azure. Das folgende Beispiel zeigt ein Szenario zum Kopieren eines Blobs über eine URL für zugängliche Quellobjekte.

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

Ressourcen

Weitere Informationen zum Kopieren von Blobs mithilfe der Azure Blob Storage-Clientbibliothek für Java finden Sie in den folgenden Ressourcen.

Codebeispiele

REST-API-Vorgänge

Das SDK für Java enthält Bibliotheken, die auf der zugrunde liegenden Azure-REST-API basieren, und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute Java-Paradigmen. Die Clientbibliotheksmethoden, die in diesem Artikel behandelt werden, verwenden die folgenden REST-API-Vorgänge:

Ressourcen zur Clientbibliothek

  • Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Java. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Java-App.