Dela via


Kopiera en blob från en url för källobjekt med .NET

Den här artikeln visar hur du kopierar en blob från en källobjekt-URL med hjälp av Azure Storage-klientbiblioteket för .NET. Du kan kopiera en blob från en källa inom samma lagringskonto, från en källa i ett annat lagringskonto eller från alla tillgängliga objekt som hämtas via HTTP GET-begäran på en viss URL.

De klientbiblioteksmetoder som beskrivs i den här artikeln använder rest-API-åtgärderna Put Blob From URL och Put Block From URL . Dessa metoder är att föredra för kopieringsscenarier där du vill flytta data till ett lagringskonto och ha en URL för källobjektet. Information om kopieringsåtgärder där du vill ha asynkron schemaläggning finns i Kopiera en blob med asynkron schemaläggning med .NET.

Förutsättningar

Konfigurera din miljö

Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt för att arbeta med Azure Blob Storage-klientbiblioteket för .NET. Stegen omfattar paketinstallation, tillägg av using direktiv och skapande av ett auktoriserat klientobjekt. Mer information finns i Komma igång med Azure Blob Storage och .NET.

Installera paket

Från projektkatalogen installerar du paket för Azure Blob Storage- och Azure Identity-klientbiblioteken med hjälp av dotnet add package kommandot . Azure.Identity-paketet behövs för lösenordslösa anslutningar till Azure-tjänster.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Lägga till using direktiv

Lägg till dessa using direktiv överst i kodfilen:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Vissa kodexempel i den här artikeln kan kräva ytterligare using direktiv.

Skapa ett klientobjekt

Om du vill ansluta en app till Blob Storage skapar du en instans av BlobServiceClient. I följande exempel visas hur du skapar ett klientobjekt med hjälp av DefaultAzureCredential för auktorisering:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Du kan registrera en tjänstklient för beroendeinmatning i en .NET-app.

Du kan också skapa klientobjekt för specifika containrar eller blobar. Mer information om hur du skapar och hanterar klientobjekt finns i Skapa och hantera klientobjekt som interagerar med dataresurser.

Auktorisering

Auktoriseringsmekanismen måste ha de behörigheter som krävs för att utföra en kopieringsåtgärd. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda rollen Storage Blob Data Contributor eller senare. Mer information finns i auktoriseringsvägledningen för Put Blob From URL (REST API) eller Put Block From URL (REST API).

Om att kopiera blobar från en källobjekt-URL

Åtgärden Put Blob From URL skapar en ny blockblob där innehållet i bloben läse från en viss URL. Åtgärden slutförs synkront.

Källan kan vara valfritt objekt som kan hämtas via en HTTP GET-standardbegäran på den angivna URL:en. Detta omfattar blockblobar, tilläggsblobar, sidblobar, blobögonblicksbilder, blobversioner eller alla tillgängliga objekt i eller utanför Azure.

När källobjektet är en blockblob kopieras allt incheckat blobinnehåll. Blocklistan bevaras dock inte och icke-utelämnade block kopieras inte. Innehållet i målbloben är identiskt med källans, men listan över bekräftade block bevaras inte.

Målet är alltid en blockblob, antingen en befintlig blockblob eller en ny blockblob som skapats av åtgärden. Innehållet i en befintlig blob skrivs över med innehållet i den nya bloben.

Åtgärden Put Blob From URL kopierar alltid hela källbloben. Kopiering av ett intervall med byte eller en uppsättning block stöds inte. Om du vill utföra partiella uppdateringar av en blockblobs innehåll med hjälp av en käll-URL använder du API:et Put Block From URL tillsammans med Put Block List (Placera blockeringslista).

Mer information om åtgärden Put Blob From URL , inklusive begränsningar för blobstorlek och faktureringsöverväganden, finns i Lägga till blob från URL-kommentarer.

Kopiera en blob från en url för källobjekt

Det här avsnittet ger en översikt över metoder som tillhandahålls av Azure Storage-klientbiblioteket för .NET för att utföra en kopieringsåtgärd från en källobjekt-URL.

Följande metoder omsluter rest-API-åtgärden Put Blob From URL och skapar en ny blockblob där innehållet i bloben läss från en viss URL:

Dessa metoder är att föredra för scenarier där du vill flytta data till ett lagringskonto och ha en URL för källobjektet.

För stora objekt kan du välja att arbeta med enskilda block. Följande metoder omsluter rest-API-åtgärden Put Block From URL ( Placera block från URL ). Dessa metoder skapar ett nytt block som ska checkas in som en del av en blob där innehållet läse från en käll-URL:

Kopiera en blob från en källa i Azure

Om du kopierar en blob från en källa i Azure kan åtkomst till källbloben auktoriseras via Microsoft Entra-ID, en signatur för delad åtkomst (SAS) eller en kontonyckel.

I följande exempel visas ett scenario för kopiering från en källblob i Azure. Metoden SyncUploadFromUriAsync kan också acceptera en boolesk parameter för att ange om en befintlig blob ska skrivas över, som du ser i exemplet. Parametern overwrite är som standard 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*/);
}

Metoden SyncUploadFromUriAsync kan också acceptera en BlobSyncUploadFromUriOptions-parameter för att ange ytterligare alternativ för åtgärden.

Kopiera en blob från en källa utanför Azure

Du kan utföra en kopieringsåtgärd på alla källobjekt som kan hämtas via HTTP GET-begäran på en viss URL, inklusive tillgängliga objekt utanför Azure. I följande exempel visas ett scenario för att kopiera en blob från en URL för tillgängligt källobjekt.

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

Resurser

Mer information om hur du kopierar blobar med hjälp av Azure Blob Storage-klientbiblioteket för .NET finns i följande resurser.

REST API-åtgärder

Azure SDK för .NET innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta .NET-paradigm. De klientbiblioteksmetoder som beskrivs i den här artikeln använder följande REST API-åtgärder:

Kodexempel

Klientbiblioteksresurser