这里用到了azure的官方库, 最低需要我们的go版本是1.18
先安装
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
这里我们使用连接字符串来做身份认证, 获取最简单, 在azure portal上找到

首先是遍历blob
package main import ( "context" "fmt" "log" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob" ) const ( connStr = "你的连接字符串" ) func main() { service, err := azblob.NewServiceClientFromConnectionString(connStr, nil) if err != nil { log.Fatal(err) } container, err := service.NewContainerClient("test") if err != nil { log.Fatal(err) } ctx := context.Background() pager := container.ListBlobsFlat(nil) for pager.NextPage(ctx) { resp := pager.PageResponse() for _, v := range resp.Segment.BlobItems { fmt.Println(*v.Name, *v.Properties.ContentLength) } } if err = pager.Err(); err != nil { fmt.Println(err) } }
重点是v这个变量, 他是azblob.BlobItemInternal类型的, 里面有我们blob容器里面的文件属性, 比较常用的属性都封装在了Properties这个属性里面,包括大小, 创建时间等等
然后是读取一个blob容器内的文件内容
package main import ( "bytes" "context" "fmt" "log" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob" ) const ( connStr = "你的连接字符串" ) func main() { service, err := azblob.NewServiceClientFromConnectionString(connStr, nil) if err != nil { log.Fatal(err) } container, err := service.NewContainerClient("test") if err != nil { log.Fatal(err) } blockBlob, err := container.NewBlockBlobClient("key_password.txt") if err != nil { log.Fatal(err) } ctx := context.Background() get, err := blockBlob.Download(ctx, nil) if err != nil { log.Fatal(err) } downloadedData := &bytes.Buffer{} reader := get.Body(&azblob.RetryReaderOptions{}) _, err = downloadedData.ReadFrom(reader) if err != nil { log.Fatal(err) } fmt.Println(downloadedData.String()) }
然后是删除我们blob容器内的一个文件
_, err = blockBlob.Delete(ctx, nil)
发表回复