本节介绍如何快速使用OSS Go SDK完成常见操作,如创建存储空间(Bucket)、上传/下载文件(Object)等。
创建存储空间
存储空间是OSS全局命名空间,相当于数据的容器,可以存储若干文件。 以下代码用于新建一个存储空间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func handleError(err error) { fmt.Println( "Error:" , err) os.Exit(- 1 ) } func main() { // Endpoint以杭州为例,其它Region请按实际情况填写。 // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 accessKeyId := "<yourAccessKeyId>" accessKeySecret := "<yourAccessKeySecret>" bucketName := "<yourBucketName>" // 创建OSSClient实例。 client, err := oss.New(endpoint, accessKeyId, accessKeySecret) if err != nil { handleError(err) } // 创建存储空间。 err = client.CreateBucket(bucketName) if err != nil { handleError(err) } } |
存储空间的命名规范,请参见基本概念中的命名规范。创建存储空间详情,请参见创建存储空间。
获取endpoint信息,请参见访问域名和数据中心文档。
上传文件
以下代码用于上传文件至OSS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func handleError(err error) { fmt.Println( "Error:" , err) os.Exit(- 1 ) } func main() { // Endpoint以杭州为例,其它Region请按实际情况填写。 // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 accessKeyId := "<yourAccessKeyId>" accessKeySecret := "<yourAccessKeySecret>" bucketName := "<yourBucketName>" // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 objectName := "<yourObjectName>" // <yourLocalFileName>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。 localFileName := "<yourLocalFileName>" // 创建OSSClient实例。 client, err := oss.New(endpoint, accessKeyId, accessKeySecret) if err != nil { handleError(err) } // 获取存储空间。 bucket, err := client.Bucket(bucketName) if err != nil { handleError(err) } // 上传文件。 err = bucket.PutObjectFromFile(objectName, localFileName) if err != nil { handleError(err) } } |
下载文件
以下代码用于下载文件到本地:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func handleError(err error) { fmt.Println( "Error:" , err) os.Exit(- 1 ) } func main() { // Endpoint以杭州为例,其它Region请按实际情况填写。 // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 accessKeyId := "<yourAccessKeyId>" accessKeySecret := "<yourAccessKeySecret>" bucketName := "<yourBucketName>" // <yourObjectName>从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 objectName := "<yourObjectName>" downloadedFileName := "<yourDownloadedFileName>" // 创建OSSClient实例。 client, err := oss.New(endpoint, accessKeyId, accessKeySecret) if err != nil { handleError(err) } // 获取存储空间。 bucket, err := client.Bucket(bucketName) if err != nil { handleError(err) } // 下载文件。 err = bucket.GetObjectToFile(objectName, downloadedFileName) if err != nil { handleError(err) } } |
列举文件
以下代码用于列举指定存储空间下的文件。默认列举100个文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func HandleError(err error) { fmt.Println( "Error:" , err) os.Exit(- 1 ) } func main() { // 创建OSSClient实例。 client, err := oss.New( "<yourEndpoint>" , "<yourAccessKeyId>" , "<yourAccessKeySecret>" ) if err != nil { HandleError(err) } // 获取存储空间。 bucketName := "<yourBucketName>" bucket, err := client.Bucket(bucketName) if err != nil { HandleError(err) } // 列举文件。 marker := "" for { lsRes, err := bucket.ListObjects(oss.Marker(marker)) if err != nil { HandleError(err) } // 打印列举文件,默认情况下一次返回100条记录。 for _, object := range lsRes.Objects { fmt.Println( "Bucket: " , object.Key) } if lsRes.IsTruncated { marker = lsRes.NextMarker } else { break } } } |
删除文件
以下代码用于删除指定文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func handleError(err error) { fmt.Println( "Error:" , err) os.Exit(- 1 ) } func main() { // Endpoint以杭州为例,其它Region请按实际情况填写。 // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 accessKeyId := "<yourAccessKeyId>" accessKeySecret := "<yourAccessKeySecret>" bucketName := "<yourBucketName>" // <yourObjectName>表示删除OSS文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 objectName := "<yourObjectName>" // 创建OSSClient实例。 client, err := oss.New(endpoint, accessKeyId, accessKeySecret) if err != nil { handleError(err) } // 获取存储空间。 bucket, err := client.Bucket(bucketName) if err != nil { handleError(err) } // 删除文件。 err = bucket.DeleteObject(objectName) if err != nil { handleError(err) } } |
删除文件详情请参见管理文件中的删除文件。