Sdílet prostřednictvím


Kopírování blobu ze zdrojové adresy URL pomocí .NET

Tento článek ukazuje, jak zkopírovat objekt blob ze zdrojové adresy URL objektu pomocí klientské knihovny azure Storage pro .NET. Objekt blob můžete zkopírovat ze zdroje ve stejném účtu úložiště, ze zdroje v jiném účtu úložiště nebo z libovolného přístupného objektu načteného prostřednictvím požadavku HTTP GET na dané adrese URL.

Metody klientské knihovny popsané v tomto článku používají operace Put Blob From URL a Put Block From URL REST API. Tyto metody jsou upřednostňované pro scénáře kopírování, ve kterých chcete přesunout data do účtu úložiště a mít adresu URL zdrojového objektu. Operace kopírování, ve kterých chcete asynchronní plánování, najdete v tématu Kopírování objektu blob s asynchronním plánováním pomocí .NET.

Požadavky

Nastavení prostředí

Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro .NET. Kroky zahrnují instalaci balíčku, přidání using direktiv a vytvoření autorizovaného objektu klienta. Podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a .NET.

Instalace balíčků

Z adresáře projektu nainstalujte balíčky pro klientské knihovny Azure Blob Storage a Azure Identity pomocí dotnet add package příkazu. Balíček Azure.Identity je potřeba pro připojení bez hesla ke službám Azure.

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

Přidejte using direktivy

Na začátek souboru kódu přidejte tyto using direktivy:

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

Některé příklady kódu v tomto článku mohou vyžadovat další using direktivy.

Vytvoření objektu klienta

Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak pomocí DefaultAzureCredential vytvořit objekt klienta pro autorizaci:

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

    return client;
}

Klienta služby můžete zaregistrovat pro injektování závislostí v aplikaci .NET.

Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob. Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.

Autorizace

Autorizační mechanismus musí mít potřebná oprávnění k provedení operace kopírování. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete vestavěnou roli služby Azure RBAC Přispěvatel dat pro úložiště objektů blob nebo jinou vyšší roli. Další informace najdete v pokynech k autorizaci pro put blob from URL (REST API) nebo put Block From URL (REST API).

Kopírování objektu blob z adresy URL zdrojového objektu

Operace Put Blob From URL vytvoří nový blokový blob, jehož obsah je načten z dané adresy URL. Operace se dokončí synchronně.

Zdrojem může být libovolný objekt, který lze načíst prostřednictvím standardního požadavku HTTP GET na dané adrese URL. To zahrnuje blokové objekty blob, doplňovací blokové objekty blob, stránkové objekty blob, snímky objektů blob, verze objektů blob nebo jakýkoliv přístupný objekt uvnitř nebo mimo Azure.

Pokud je zdrojovým objektem blokový blob, zkopíruje se veškerý potvrzený obsah bloku. Seznam bloků však není zachován a nepotvrzené bloky se nezkopírují. Obsah cílového objektu blob je stejný jako obsah zdroje, ale potvrzený seznam blokovaných položek se nezachová.

Cílem je vždy objekt blob bloku, buď existující, nebo nový, vytvořený operací. Obsah existujícího objektu blob se přepíše obsahem nového objektu blob.

Operace Put Blob From URL vždy kopíruje celý zdrojový objekt blob. Kopírování rozsahu bajtů nebo sady bloků se nepodporuje. Chcete-li provést částečné aktualizace obsahu bloku objektu blob pomocí zdrojové adresy URL, použijte rozhraní API Put Block From URL společně s Put Block List.

Další informace o Put Blob From URL operaci, včetně omezení velikosti objektů blob a aspektů fakturace, najdete v tématu Poznámky k vložení objektu blob z adresy URL.

Zkopírování objektu blob z adresy URL zdrojového objektu

Tato část poskytuje přehled metod poskytovaných klientskou knihovnou azure Storage pro .NET k provedení operace kopírování z adresy URL zdrojového objektu.

Následující metody obalují operaci Put Blob From URL REST API a vytvoří nový blokový blob, jehož obsah se načítá z dané URL:

Tyto metody jsou upřednostňované pro scénáře, kdy chcete přesunout data do účtu úložiště a mít adresu URL zdrojového objektu.

U velkých objektů se můžete rozhodnout pracovat s jednotlivými bloky. Následující metody zabalí operaci Put Block From URL REST API. Tyto metody vytvoří nový blok, který se potvrdí jako součást objektu blob, kde se obsah načítá ze zdrojové adresy URL:

Kopírování objektu blob ze zdroje v Azure

Pokud kopírujete objekt blob ze zdroje v Rámci Azure, je možné přístup ke zdrojovému objektu blob autorizovat prostřednictvím ID Microsoft Entra, sdíleného přístupového podpisu (SAS) nebo klíče účtu.

Následující příklad ukazuje scénář kopírování ze zdrojového objektu blob v Azure. Metoda SyncUploadFromUriAsync může volitelně přijmout logický parametr, který označuje, zda má být existující objekt blob přepsán, jak je znázorněno v příkladu. Výchozí overwrite hodnota parametru je 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*/);
}

Metoda SyncUploadFromUriAsync může také přijmout parametr BlobSyncUploadFromUriOptions k určení dalších možností operace.

Zkopírujte objekt blob ze zdroje mimo Azure

Operaci kopírování můžete provést u libovolného zdrojového objektu, který lze načíst prostřednictvím požadavku HTTP GET na danou adresu URL, včetně přístupných objektů mimo Azure. Následující příklad ukazuje scénář kopírování objektu blob z adresy URL přístupného zdrojového objektu.

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

Zdroje informací

Další informace o kopírování objektů blob pomocí klientské knihovny azure Blob Storage pro .NET najdete v následujících zdrojích informací.

Ukázky kódu

Operace rozhraní REST API

Sada Azure SDK pro .NET obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat .NET. Metody klientské knihovny popsané v tomto článku používají následující operace rozhraní REST API:

Prostředky klientské knihovny

  • Tento článek je součástí příručky pro vývojáře služby Blob Storage pro .NET. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace .NET.