Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
- Go 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 importvä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 behörighetshantering med Microsoft Entra ID (rekommenderas) behöver du den inbyggda Azure-rollen Storage Blob Data Contributor eller en högre. 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 Det här beteendet beror på objektets övergripande storlek och hur dataöverföringsalternativen anges.
Note
Azure Storage-klientbiblioteken stöder inte samtidiga skrivningar till samma blob. Om din app kräver att flera processer skrivs till samma blob bör du implementera en strategi för samtidighetskontroll för att ge en förutsägbar upplevelse. För att lära dig mer om samtidighetsstrategier, se Hantera samtidighet i Blob Storage.
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 vid uppladdning av 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.
Note
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:
- Lägg till blob (REST API)
- Lägg till 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.