开发者社区 问答 正文

Go-SDK之如何实现快速开始?

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

初始化Client


初始化Client,即创建Client: 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() {
    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        handleError(err)
    }
    lsRes, err := client.ListBuckets()
    if err != nil {
        handleError(err)
    }
    for _, bucket := range lsRes.Buckets {
        fmt.Println("bucket:", bucket.Name)
    }
}


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


查看Bucket列表


通过Client.ListBuckets查看Bucket列表: 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() {
    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        handleError(err)
    }
    lsRes, err := client.ListBuckets()
    if err != nil {
        handleError(err)
    }
    for _, bucket := range lsRes.Buckets {
        fmt.Println("bucket:", bucket.Name)
    }
}


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


获取Bucket


Bucket的操作有Client的方法完成,如创建/删除Bucket、设置/清除Bucket的权限/生命周期/防盗链等,Object的操作有Bucket的方法完成,如上传/下载/删除文件、设置Object的访问权限等。用户可以通过Client.Bucket获取指定Bucket的操作句柄。 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() {
    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        handleError(err)
    }
    bucket, err := client.Bucket("my-bucket")
    if err != nil {
        handleError(err)
    }
    _, err = bucket.ListObjects()
    if err != nil {
        handleError(err)
    }
}



查看文件列表


通过Bucket.ListObjects查看Bucket中的文件列表: 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() {
    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        handleError(err)
    }
    bucket, err := client.Bucket("my-bucket")
    if err != nil {
        handleError(err)
    }
    lsRes, err := bucket.ListObjects()
    if err != nil {
        handleError(err)
    }
    for _, object := range lsRes.Objects {
        fmt.Println("Object:", object.Key)
    }
}



上传文件


通过Bucket.PutObjectFromFile上传文件: 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() {
    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        handleError(err)
    }
    bucket, err := client.Bucket("my-bucket")
    if err != nil {
        handleError(err)
    }
    err = bucket.PutObjectFromFile("my-object", "LocalFile")
    if err != nil {
        handleError(err)
    }
}


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

下载文件


通过Bucket.GetObject下载文件: 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() {
    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        handleError(err)
    }
    bucket, err := client.Bucket("my-bucket")
    if err != nil {
        handleError(err)
    }
    err = bucket.GetObjectToFile("my-object", "LocalFile")
    if err != nil {
        handleError(err)
    }
}


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

删除文件


通过Bucket.DeleteObject从Bucket中删除文件: 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() {
    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        handleError(err)
    }
    bucket, err := client.Bucket("my-bucket")
    if err != nil {
        handleError(err)
    }
    err = bucket.DeleteObject("my-object")
    if err != nil {
        handleError(err)
    }
}


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

了解更多

展开
收起
青衫无名 2017-10-19 14:14:13 2101 分享 版权
0 条回答
写回答
取消 提交回答