Ladda upp en blockblob med Go
Den här artikeln visar hur du laddar upp en blob med hjälp av Azure Storage-klientmodulen för Go. Du kan ladda upp data till en blockblob från en filsökväg, en ström, ett binärt objekt eller en textsträng. Du kan också ladda upp blobar med indextaggar.
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 ladda upp en blob. 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 (REST API) och Put Block (REST API).
Ladda upp data till en blockblob
Om du vill ladda upp en blob anropar du någon av följande metoder från klientobjektet:
För att utföra uppladdningen kan klientbiblioteket använda antingen Put Blob eller en serie Put Block-anrop följt av Put Block List
. Det här beteendet beror på objektets övergripande storlek och hur dataöverföringsalternativen anges.
Ladda upp en blockblob från en lokal filsökväg
I följande exempel laddas en lokal fil upp till en blockblob:
func uploadBlobFile(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the file to the specified container with the specified blob name
_, err = client.UploadFile(context.TODO(), containerName, blobName, file, nil)
handleError(err)
}
Ladda upp en blockblob från en dataström
I följande exempel skapas en Reader
instans och läser från en sträng som om det vore en ström med byte. Strömmen laddas sedan upp till en blockblob:
func uploadBlobStream(client *azblob.Client, containerName string, blobName string) {
data := "Hello, world!"
blobContentReader := strings.NewReader(data)
// Upload the file to the specified container with the specified blob name
_, err := client.UploadStream(context.TODO(), containerName, blobName, blobContentReader, nil)
handleError(err)
}
Ladda upp binära data till en blockblob
I följande exempel laddas binära data upp till en blockblob:
func uploadBlobBuffer(client *azblob.Client, containerName string, blobName string) {
// Create a buffer with the content of the file to upload
data := []byte("Hello, world!")
// Upload the data to a block blob
_, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, nil)
handleError(err)
}
Ladda upp en blockblob med indextaggar
I följande exempel laddas en blockblob upp med indextaggar:
func uploadBlobWithIndexTags(client *azblob.Client, containerName string, blobName string) {
// Create a buffer with the content of the file to upload
data := []byte("Hello, world!")
// Upload the data to a block blob with index tags
_, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, &azblob.UploadBufferOptions{
Tags: map[string]string{
"key1": "value1",
"key2": "value2",
},
})
handleError(err)
}
Ladda upp en blockblob med konfigurationsalternativ
Du kan definiera konfigurationsalternativ för klientbibliotek när du laddar upp en blob. Dessa alternativ kan justeras för att förbättra prestanda, förbättra tillförlitligheten och optimera kostnaderna. Följande kodexempel visar hur du definierar konfigurationsalternativ för en uppladdningsåtgärd.
Ange alternativ för dataöverföring för uppladdning
Du kan ange konfigurationsalternativ när du laddar upp en blob för att optimera prestanda. Följande konfigurationsalternativ är tillgängliga för uppladdningsåtgärder:
BlockSize
: Storleken på varje block när du laddar upp en blockblob. Standardvärdet är 4 MB.Concurrency
: Det maximala antalet parallella anslutningar som ska användas under uppladdningen. Standardvärdet är 5.
De här konfigurationsalternativen är tillgängliga när du laddar upp med hjälp av följande metoder:
Metoden Upload stöder inte dessa alternativ och laddar upp 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 UploadFileOptions. 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 uploadBlobWithTransferOptions(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the data to a block blob with transfer options
_, err = client.UploadFile(context.TODO(), containerName, blobName, file,
&azblob.UploadFileOptions{
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 upp 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 upp blobar använder följande REST API-åtgärder:
- Placera blob (REST API)
- Placera block (REST API)
Klientmodulresurser
Se även
- Hantera och hitta Azure Blob-data med blobindextaggar
- Använda blobindextaggar för att hantera och hitta data i Azure Blob Storage
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.