Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u een blob kopieert vanuit een bronobject-URL met behulp van de Azure Storage-clientbibliotheek voor Java. U kunt een blob kopiëren vanuit een bron binnen hetzelfde opslagaccount, van een bron in een ander opslagaccount of van een toegankelijk object dat via een HTTP GET-aanvraag op een bepaalde URL wordt opgehaald.
De clientbibliotheekmethoden die in dit artikel worden behandeld, maken gebruik van de Put Blob From URL en Put Block From URL REST API-bewerkingen. Deze methoden hebben de voorkeur voor kopieerscenario's waarbij u gegevens naar een opslagaccount wilt verplaatsen en een URL voor het bronobject wilt hebben. Zie Een blob kopiëren met asynchrone planning met behulp van Java voor kopieerbewerkingen waarvoor u asynchrone planning wilt.
Vereisten
- Azure-abonnement: u kunt een gratis abonnement nemen
- Azure Storage-account: maak een opslagaccount
- Java Development Kit (JDK) versie 8 of hoger (we raden versie 17 aan voor de beste ervaring)
- Apache Maven wordt in dit voorbeeld gebruikt voor projectbeheer
Uw omgeving instellen
Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientbibliotheek voor Java. Zie Aan de slag met Azure Blob Storage en Java voor meer informatie.
Als u wilt werken met de codevoorbeelden in dit artikel, volgt u deze stappen om uw project in te stellen.
Notitie
In dit artikel wordt het Maven-buildhulpprogramma gebruikt om de voorbeeldcode te bouwen en uit te voeren. Andere buildhulpprogramma's, zoals Gradle, werken ook met de Azure SDK voor Java.
Pakketten installeren
Open het pom.xml bestand in de teksteditor. Installeer de pakketten door het BOM-bestand op te nemen of een directe afhankelijkheid op te nemen.
Importverklaringen toevoegen
Voeg de volgende import instructies toe:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Autorisatie
Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om een kopieerbewerking uit te voeren. Voor autorisatie met Microsoft Entra ID (aanbevolen) hebt u de ingebouwde Azure RBAC-rol Opslag Blob Gegevens Bijdrager of hoger nodig. Zie de autorisatierichtlijnen voor Put Blob From URL (REST API) of Put Block From URL (REST API) voor meer informatie.
Een clientobject maken
Als u een app wilt verbinden met Blob Storage, maakt u een exemplaar van BlobServiceClient.
In het volgende voorbeeld wordt BlobServiceClientBuilder gebruikt om een BlobServiceClient object te bouwen met behulp vanDefaultAzureCredential, en ziet u hoe u indien nodig container- en blobclients maakt:
// 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>");
Zie Clientobjecten maken en beheren die interactie hebben met gegevensbronnen voor meer informatie over het maken en beheren van clientobjecten.
Over het kopiëren van blobs vanuit een bronobject-URL
Met de Put Blob From URL bewerking wordt een nieuwe blok-blob gemaakt waarin de inhoud van de blob wordt gelezen uit een bepaalde URL. De bewerking wordt synchroon voltooid.
De bron kan elk object ophalen via een standaard HTTP GET-aanvraag op de opgegeven URL. Dit omvat blokblobs, append-blobs, paginablobs, blob-momentopnamen, blobversies of elk toegankelijk object binnen of buiten Azure.
Wanneer het bronobject een blok-blob is, wordt alle vastgelegde blob-inhoud gekopieerd. De bloklijst blijft echter niet behouden en niet-gecomitteerde blokken worden niet gekopieerd. De inhoud van de doelblob is identiek aan die van de bron, maar de vastgelegde bloklijst wordt niet behouden.
De bestemming is altijd een blokblob, een bestaande blokblob of een nieuwe blokblob die door de bewerking is gemaakt. De inhoud van een bestaande blob wordt overschreven met de inhoud van de nieuwe blob.
Met Put Blob From URL de bewerking wordt altijd de hele bron-blob gekopieerd. Het kopiëren van een bereik van bytes of een set blokken wordt niet ondersteund. Als u gedeeltelijke updates wilt uitvoeren voor de inhoud van een blok-blob met behulp van een bron-URL, gebruikt u de API Put Block From URL samen met Put Block List.
Zie Put Blob From URL voor meer informatie over de bewerking, inclusief beperkingen voor blobgrootten en factureringsoverwegingen.
Een blob kopiëren vanuit een bronobject-URL
In deze sectie vindt u een overzicht van de methoden die worden geboden door de Azure Storage-clientbibliotheek voor Java om een kopieerbewerking uit te voeren vanuit een bronobject-URL.
De volgende methoden verpakken de bewerking Put Blob From URL REST API en maken een nieuwe blok-blob waarin de inhoud van de blob wordt gelezen uit een bepaalde URL:
Deze methoden hebben de voorkeur voor scenario's waarin u gegevens naar een opslagaccount wilt verplaatsen en een URL voor het bronobject wilt hebben.
Voor grote objecten kunt u met afzonderlijke blokken werken. Met de volgende methode wordt de Put Block From URL REST API-bewerking verpakt. Met deze methode maakt u een nieuw blok dat moet worden doorgevoerd als onderdeel van een blob waarin de inhoud wordt gelezen uit een bron-URL:
Een blob kopiëren vanuit een bron in Azure
Als u een blob kopieert vanuit een bron in Azure, kan toegang tot de bron-blob worden geautoriseerd via Microsoft Entra ID, een SHARED Access Signature (SAS) of een accountsleutel.
In het volgende voorbeeld ziet u een scenario voor het kopiëren van een bron-blob in Azure. De methode uploadFromUrl kan desgewenst een Booleaanse parameter accepteren om aan te geven of een bestaande blob moet worden overschreven, zoals wordt weergegeven in het voorbeeld.
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);
}
De methode uploadFromUrlWithResponse kan ook een BlobUploadFromUrlOptions-parameter accepteren om verdere opties voor de bewerking op te geven.
Een blob kopiëren vanuit een externe bron
U kunt een kopieerbewerking uitvoeren op elk bronobject dat kan worden opgehaald via een HTTP GET-aanvraag op een bepaalde URL, inclusief toegankelijke objecten buiten Azure. In het volgende voorbeeld ziet u een scenario voor het kopiëren van een blob vanuit een toegankelijke bronobject-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);
}
Hulpmiddelen
Zie de volgende resources voor meer informatie over het kopiëren van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor Java.
Codevoorbeelden
REST API-bewerkingen
De Azure SDK voor Java bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende Java-paradigma's. De clientbibliotheekmethoden die in dit artikel worden behandeld, gebruiken de volgende REST API-bewerkingen:
- Blob plaatsen vanuit URL (REST API)
- Blok plaatsen vanuit URL (REST API)
Clientbibliotheekbronnen
Gerelateerde inhoud
- Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor Java. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Uw Java-app bouwen voor meer informatie.