Kopírování objektu blob ze zdrojové adresy URL objektu 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.

Předpoklady

  • Tento článek předpokládá, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou služby Azure Blob Storage pro .NET. Další informace o nastavení projektu, včetně instalace balíčku, přidání using direktiv a vytvoření autorizovaného objektu klienta, najdete v tématu Začínáme se službou Azure Blob Storage a .NET.
  • Autorizační mechanismus musí mít oprávnění k provedení operace kopírování. Další informace najdete v pokynech k autorizaci pro následující operaci rozhraní REST API:

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

Operace Put Blob From URL vytvoří nový objekt blob bloku, ve kterém se obsah objektu blob načte 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 objekty blob bloku, doplňovací objekty blob, objekty blob stránky, snímky objektů blob, verze objektů blob nebo jakýkoli přístupný objekt uvnitř Nebo mimo Azure.

Pokud je zdrojovým objektem objekt blob bloku, zkopíruje se veškerý potvrzený obsah objektu blob. Seznam blokovaných bloků se ale nezachová 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, existující objekt blob bloku nebo nový objekt blob bloku 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. Pokud chcete provádět částečné aktualizace obsahu objektu blob bloku pomocí zdrojové adresy URL, použijte společně se seznamem blokovaných objektů URL rozhraní API Put Block From.

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 zabalí operaci Put Blob From URL REST API a vytvoří nový objekt blob bloku, ve kterém se obsah objektu blob načte z dané adresy 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 Rámci 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.

Kopírování objektu 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í.

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:

Ukázky kódu

Prostředky klientské knihovny