下面介绍如何使用OSS Go SDK来访问OSS服务,包括查看Bucket列表,查看文
件列表,上传/下载文件和删除文件。使用OSS Go SDK,需要引入oss包import github.com/aliyun/aliyun-oss-go-sdk/oss。
初始化Client,即创建Client:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
提示:
通过Client.ListBuckets查看Bucket列表:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
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)
}
注:
- Bucket的命名规范请查看创建Bucket
- Bucket名字不能与OSS服务中其他用户已有的Bucket重复,所以你需要选择一个独 特的Bucket名字以避免创建失败
Bucket的操作有Client的方法完成,如创建/删除Bucket、设置/清除Bucket的权限/生命周期/防盗链等,Object的操作有Bucket的方法完成,如上传/下载/删除文件、设置Object的访问权限等。用户可以通过Client.Bucket获取指定Bucket的操作句柄。
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket("my-bucket")
if err != nil {
// HandleError(err)
}
通过Bucket.ListObjects查看Bucket中的文件列表:
import "fmt"
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
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上传文件:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
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下载文件:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
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中删除文件:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
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来查看文件确实已经被删除。