下面介紹如何使用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)
}
}
說明:
查看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)
}
}
注意:
- 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
來查看檔案確實已經被刪除。