Ladda ned en blob med Go
Den här artikeln visar hur du laddar ned en blob med hjälp av Azure Storage-klientmodulen för Go. Du kan ladda ned blobdata till olika mål, inklusive en lokal filsökväg, dataström eller textsträng.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Azure Storage-konto – skapa ett lagringskonto
- Gå 1.18+
Konfigurera din miljö
Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt så att det fungerar med Azure Blob Storage-klientmodulen för Go. Stegen omfattar modulinstallation, tillägg av import
sökvägar och skapande av ett auktoriserat klientobjekt. Mer information finns i Kom igång med Azure Blob Storage och Go.
Installera moduler
Installera azblob-modulen med följande kommando:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Om du vill autentisera med Microsoft Entra-ID (rekommenderas) installerar du modulen azidentity
med följande kommando:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Lägga till importsökvägar
Lägg till följande importsökvägar i kodfilen:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Dessa importsökvägar representerar det minsta som krävs för att komma igång. Vissa kodexempel i den här artikeln kan kräva ytterligare importsökvägar. Specifik information och exempelanvändning finns i Kodexempel.
Skapa ett klientobjekt
Om du vill ansluta en app till Blob Storage skapar du ett klientobjekt med azblob . NewClient. I följande exempel visas hur du skapar ett klientobjekt med hjälp av DefaultAzureCredential
för auktorisering:
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
}
Auktorisering
Auktoriseringsmekanismen måste ha de behörigheter som krävs för att utföra en nedladdningsåtgärd. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda Azure RBAC-rollen Storage Blob Data Reader eller senare. Mer information finns i auktoriseringsvägledningen för Get Blob (REST API).
Ladda ned en blob
Du kan använda någon av följande metoder för att ladda ned en blob:
Ladda ned till en filsökväg
I följande exempel laddas en blob ned till en filsökväg:
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)
}
Ladda ned till en dataström
I följande exempel laddas en blob ned till en dataström och läser från strömmen genom att anropa metoden NewRetryReader .
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())
}
Ange alternativ för dataöverföring för nedladdning
Du kan ange konfigurationsalternativ när du laddar ned en blob för att optimera prestanda. Följande konfigurationsalternativ är tillgängliga för nedladdningsåtgärder:
BlockSize
: Storleken på varje block när du laddar ned en blockblob. Standardvärdet är 4 MB.Concurrency
: Det maximala antalet parallella anslutningar som ska användas under nedladdningen. Standardvärdet är 5.
De här alternativen är tillgängliga när du laddar ned med hjälp av följande metoder:
Metoden DownloadStream stöder inte dessa alternativ och laddar ned data i en enda begäran.
Mer information om överföringsstorleksgränser för Blob Storage finns i Skala mål för Blob Storage.
I följande kodexempel visas hur du anger alternativ för dataöverföring med hjälp av DownloadFileOptions. De värden som anges i det här exemplet är inte avsedda att vara en rekommendation. Om du vill justera dessa värden korrekt måste du ta hänsyn till appens specifika behov.
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)
}
Mer information om hur du justerar dataöverföringsalternativ finns i Prestandajustering för uppladdningar och nedladdningar med Go.
Kommentar
Kodexemplen i den här guiden är avsedda att hjälpa dig att komma igång med Azure Blob Storage och Go. Du bör ändra felhantering och Context
värden för att uppfylla programmets behov.
Resurser
Mer information om hur du laddar ned blobar med hjälp av Azure Blob Storage-klientmodulen för Go finns i följande resurser.
Kodexempel
- Visa kodexempel från den här artikeln (GitHub)
REST API-åtgärder
Azure SDK för Go innehåller bibliotek som bygger på Azure REST API så att du kan interagera med REST API-åtgärder via välbekanta Go-paradigm. Klientbiblioteksmetoderna för att ladda ned blobar använder följande REST API-åtgärd:
- Hämta blob (REST API)
Klientmodulresurser
Relaterat innehåll
- Den här artikeln är en del av utvecklarguiden för Blob Storage för Go. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din Go-app.