Share via


Een blob downloaden met Go

In dit artikel wordt beschreven hoe u een blob downloadt met behulp van de Azure Storage-clientmodule voor Go. U kunt blobgegevens downloaden naar verschillende bestemmingen, waaronder een lokaal bestandspad, een stroom of een tekenreeks.

Vereisten

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-clientmodule voor Go. De stappen omvatten module-installatie, het toevoegen van import paden en het maken van een geautoriseerd clientobject. Zie Aan de slag met Azure Blob Storage en Go voor meer informatie.

Modules installeren

Installeer de azblob-module met behulp van de volgende opdracht:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Als u wilt verifiëren met Microsoft Entra ID (aanbevolen), installeert u de azidentity module met behulp van de volgende opdracht:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Importpaden toevoegen

Voeg in uw codebestand de volgende importpaden toe:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Deze importpaden vertegenwoordigen het minimum dat nodig is om aan de slag te gaan. Voor sommige codevoorbeelden in dit artikel zijn mogelijk extra importpaden vereist. Zie Codevoorbeelden voor specifieke details en voorbeeldgebruik.

Een clientobject maken

Als u een app wilt verbinden met Blob Storage, maakt u een clientobject met behulp van azblob. NewClient. In het volgende voorbeeld ziet u hoe u een clientobject maakt met behulp van DefaultAzureCredential autorisatie:

func getServiceClientTokenCredential(accountURL string) *azblob.Client {
    // Create a new service client with token credential
    credential, err := azidentity.NewDefaultAzureCredential(nil)
    handleError(err)

    client, err := azblob.NewClient(accountURL, credential, nil)
    handleError(err)

    return client
}

Autorisatie

Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om een downloadbewerking uit te voeren. Voor autorisatie met Microsoft Entra-id (aanbevolen) hebt u ingebouwde Azure RBAC-rol opslagblobgegevenslezer of hoger nodig. Zie de autorisatierichtlijnen voor Het ophalen van blob (REST API) voor meer informatie.

Blob downloaden

U kunt een van de volgende methoden gebruiken om een blob te downloaden:

Downloaden naar een bestandspad

In het volgende voorbeeld wordt een blob gedownload naar een bestandspad:

func downloadBlobToFile(client *azblob.Client, containerName string, blobName string) {
    // Create or open a local file where we can download the blob
    file, err := os.Create("path/to/sample/file")
    handleError(err)

    // Download the blob to the local file
    _, err = client.DownloadFile(context.TODO(), containerName, blobName, file, nil)
    handleError(err)
}

Downloaden naar een stream

In het volgende voorbeeld wordt een blob gedownload naar een stream en gelezen uit de stream door de methode NewRetryReader aan te roepen.

func downloadBlobToStream(client *azblob.Client, containerName string, blobName string) {
    // Download the blob
    get, err := client.DownloadStream(context.TODO(), containerName, blobName, nil)
    handleError(err)

    downloadedData := bytes.Buffer{}
    retryReader := get.NewRetryReader(context.TODO(), &azblob.RetryReaderOptions{})
    _, err = downloadedData.ReadFrom(retryReader)
    handleError(err)

    err = retryReader.Close()
    handleError(err)

    // Print the contents of the blob we created
    fmt.Println("Blob contents:")
    fmt.Println(downloadedData.String())
}

Opties voor gegevensoverdracht opgeven voor downloaden

U kunt configuratieopties instellen bij het downloaden van een blob om de prestaties te optimaliseren. De volgende configuratieopties zijn beschikbaar voor downloadbewerkingen:

  • BlockSize: De grootte van elk blok bij het downloaden van een blok-blob. De standaardwaarde is 4 MB.
  • Concurrency: Het maximum aantal parallelle verbindingen dat tijdens het downloaden moet worden gebruikt. De standaardwaarde is 5.

Deze opties zijn beschikbaar bij het downloaden met behulp van de volgende methoden:

De DownloadStream-methode biedt geen ondersteuning voor deze opties en downloadt gegevens in één aanvraag.

Zie Schaaldoelen voor Blob Storage voor meer informatie over overdrachtslimieten voor Blob Storage.

In het volgende codevoorbeeld ziet u hoe u opties voor gegevensoverdracht opgeeft met behulp van DownloadFileOptions. De waarden in dit voorbeeld zijn niet bedoeld als aanbeveling. Als u deze waarden goed wilt afstemmen, moet u rekening houden met de specifieke behoeften van uw app.

func downloadBlobTransferOptions(client *azblob.Client, containerName string, blobName string) {
    // Create or open a local file where we can download the blob
    file, err := os.Create("path/to/sample/file")
    handleError(err)

    // Download the blob to the local file
    _, err = client.DownloadFile(context.TODO(), containerName, blobName, file,
        &azblob.DownloadFileOptions{
            BlockSize:   int64(4 * 1024 * 1024), // 4 MiB
            Concurrency: uint16(2),
        })
    handleError(err)
}

Zie Prestaties afstemmen voor uploads en downloads met Go voor meer informatie over het afstemmen van opties voor het afstemmen van gegevensoverdracht.

Notitie

De codevoorbeelden in deze handleiding zijn bedoeld om u te helpen aan de slag te gaan met Azure Blob Storage en Go. U moet foutafhandeling en Context -waarden wijzigen om te voldoen aan de behoeften van uw toepassing.

Resources

Zie de volgende resources voor meer informatie over het downloaden van blobs met behulp van de Azure Blob Storage-clientmodule voor Go.

Codevoorbeelden

  • Codevoorbeelden uit dit artikel weergeven (GitHub)

REST API-bewerkingen

De Azure SDK voor Go bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende Go-paradigma's. De clientbibliotheekmethoden voor het downloaden van blobs gebruiken de volgende REST API-bewerking:

  • Blob ophalen (REST API)

Resources voor clientmodules

  • Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor Go. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Build your Go app voor meer informatie.