全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

快速开始

更新时间:2017-06-26 14:50:48

下面介绍如何使用OSS Go SDK来访问OSS服务,包括查看Bucket列表,查看文件列表,上传/下载文件和删除文件。使用OSS Go SDK,需要引入OSS包import github.com/aliyun/aliyun-oss-go-sdk/oss

初始化Client

初始化Client,即创建Client:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func handleError(err error) {
  8. fmt.Println("Error:", err)
  9. os.Exit(-1)
  10. }
  11. func main() {
  12. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  13. if err != nil {
  14. handleError(err)
  15. }
  16. lsRes, err := client.ListBuckets()
  17. if err != nil {
  18. handleError(err)
  19. }
  20. for _, bucket := range lsRes.Buckets {
  21. fmt.Println("bucket:", bucket.Name)
  22. }
  23. }

说明:

  • Endpoint的是OSS的访问域名,如杭州数据中的访问域名是http://oss-cn-hangzhou.aliyuncs.com,更详细的说明请参考OSS访问域名
  • AccessKeyId和AccessKeySecret是OSS的访问密钥。更详细的说明请参考OSS访问控制
  • 您运行示例程序时,请将Endpoint,AccessKeyId和AccessKeySecret替换成您的实际配置。

查看Bucket列表

通过Client.ListBuckets查看Bucket列表:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func handleError(err error) {
  8. fmt.Println("Error:", err)
  9. os.Exit(-1)
  10. }
  11. func main() {
  12. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  13. if err != nil {
  14. handleError(err)
  15. }
  16. lsRes, err := client.ListBuckets()
  17. if err != nil {
  18. handleError(err)
  19. }
  20. for _, bucket := range lsRes.Buckets {
  21. fmt.Println("bucket:", bucket.Name)
  22. }
  23. }

注意:

  • Bucket的命名规范请查看OSS 基本概念
  • Bucket名字不能与OSS服务中其他用户已有的Bucket重复,所以您需要选择一个独特的Bucket名字以避免创建失败。

获取Bucket

Bucket的操作有Client的方法完成,如创建/删除Bucket、设置/清除Bucket的权限/生命周期/防盗链等,Object的操作有Bucket的方法完成,如上传/下载/删除文件、设置Object的访问权限等。用户可以通过Client.Bucket获取指定Bucket的操作句柄。

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func handleError(err error) {
  8. fmt.Println("Error:", err)
  9. os.Exit(-1)
  10. }
  11. func main() {
  12. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  13. if err != nil {
  14. handleError(err)
  15. }
  16. bucket, err := client.Bucket("my-bucket")
  17. if err != nil {
  18. handleError(err)
  19. }
  20. _, err = bucket.ListObjects()
  21. if err != nil {
  22. handleError(err)
  23. }
  24. }

查看文件列表

通过Bucket.ListObjects查看Bucket中的文件列表:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func handleError(err error) {
  8. fmt.Println("Error:", err)
  9. os.Exit(-1)
  10. }
  11. func main() {
  12. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  13. if err != nil {
  14. handleError(err)
  15. }
  16. bucket, err := client.Bucket("my-bucket")
  17. if err != nil {
  18. handleError(err)
  19. }
  20. lsRes, err := bucket.ListObjects()
  21. if err != nil {
  22. handleError(err)
  23. }
  24. for _, object := range lsRes.Objects {
  25. fmt.Println("Object:", object.Key)
  26. }
  27. }

上传文件

通过Bucket.PutObjectFromFile上传文件:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func handleError(err error) {
  8. fmt.Println("Error:", err)
  9. os.Exit(-1)
  10. }
  11. func main() {
  12. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  13. if err != nil {
  14. handleError(err)
  15. }
  16. bucket, err := client.Bucket("my-bucket")
  17. if err != nil {
  18. handleError(err)
  19. }
  20. err = bucket.PutObjectFromFile("my-object", "LocalFile")
  21. if err != nil {
  22. handleError(err)
  23. }
  24. }

其中LocalFile是需要上传的本地文件的路径。上传成功后,可以通过Bucket.ListObjects来查看。

下载文件

通过Bucket.GetObject下载文件:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func handleError(err error) {
  8. fmt.Println("Error:", err)
  9. os.Exit(-1)
  10. }
  11. func main() {
  12. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  13. if err != nil {
  14. handleError(err)
  15. }
  16. bucket, err := client.Bucket("my-bucket")
  17. if err != nil {
  18. handleError(err)
  19. }
  20. err = bucket.GetObjectToFile("my-object", "LocalFile")
  21. if err != nil {
  22. handleError(err)
  23. }
  24. }

其中LocalFile是文件保存的路径。下载成功后,可以打开文件查看其内容。

删除文件

通过Bucket.DeleteObject从Bucket中删除文件:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func handleError(err error) {
  8. fmt.Println("Error:", err)
  9. os.Exit(-1)
  10. }
  11. func main() {
  12. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  13. if err != nil {
  14. handleError(err)
  15. }
  16. bucket, err := client.Bucket("my-bucket")
  17. if err != nil {
  18. handleError(err)
  19. }
  20. err = bucket.DeleteObject("my-object")
  21. if err != nil {
  22. handleError(err)
  23. }
  24. }

删除文件后可以通过Bucket.ListObjects来查看文件确实已经被删除。

了解更多

本文导读目录