阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

快速開始

更新時間: Oct 19, 2018

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

瞭解更多