全部產品
Search
文件中心

Object Storage Service:Go快速入門

更新時間:Feb 28, 2024

本節介紹如何快速使用OSS Go SDK完成常見操作,如建立儲存空間(Bucket)、上傳/下載檔案(Object)等。

建立儲存空間

儲存空間是OSS全域命名空間,相當於資料的容器,可以儲存若干檔案。 以下代碼用於建立一個儲存空間:

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() {
    // yourBucketName填寫Bucket名稱。
    bucketName := "yourBucketName"

    // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 建立OSSClient執行個體。
    // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    
    // 建立儲存空間。
    err = client.CreateBucket(bucketName)
    if err != nil {
        handleError(err)
    }
}

上傳檔案

以下代碼用於上傳檔案至OSS:

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() {
    // yourBucketName填寫儲存空間名稱。
    bucketName := "yourBucketName"
    // yourObjectName填寫Object完整路徑,完整路徑不包含Bucket名稱。
    objectName := "yourObjectName"
    // yourLocalFileName填寫本地檔案的完整路徑。
    localFileName := "yourLocalFileName"

    // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 建立OSSClient執行個體。
    // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 擷取儲存空間。
    bucket, err := client.Bucket(bucketName)
    if err != nil {
        handleError(err)
    }
    // 上傳檔案。
    err = bucket.PutObjectFromFile(objectName, localFileName)
    if err != nil {
        handleError(err)
    }
}

下載檔案

以下代碼用於下載檔案到本地:

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() {
    // yourBucketName填寫儲存空間名稱。
    bucketName := "yourBucketName"
    // yourObjectName填寫Object完整路徑,完整路徑中不能包含Bucket名稱
    objectName := "yourObjectName"
    // yourDownloadedFileName填寫本地檔案的完整路徑。
    downloadedFileName := "yourDownloadedFileName"

    // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 建立OSSClient執行個體。
    // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    
    // 擷取儲存空間。
    bucket, err := client.Bucket(bucketName)
    if err != nil {
        handleError(err)
    }
    // 下載檔案。
    err = bucket.GetObjectToFile(objectName, downloadedFileName)
    if err != nil {
        handleError(err)
    }
}

列舉檔案

以下代碼用於列舉指定儲存空間下的檔案。預設列舉100個檔案。

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() {
    // yourBucketName填寫儲存空間名稱。
    bucketName := "yourBucketName"
    
    // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 建立OSSClient執行個體。
    // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 擷取儲存空間。
    bucket, err := client.Bucket(bucketName)
    if err != nil {
        handleError(err)
    }

    // 列舉檔案。
    marker := ""
    for {
        lsRes, err := bucket.ListObjects(oss.Marker(marker))
        if err != nil {
            HandleError(err)
        }
        // 列印列舉檔案,預設情況下一次返回100條記錄。 
        for _, object := range lsRes.Objects {
            fmt.Println("Bucket: ", object.Key)
        }
        if lsRes.IsTruncated {
            marker = lsRes.NextMarker
        } else {
            break
        }
    }
}

刪除檔案

以下代碼用於刪除指定檔案:

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() {
    // yourBucketName填寫儲存空間名稱。
    bucketName := "yourBucketName"
    // yourObjectName填寫Object完整路徑,完整路徑中不能包含Bucket名稱。
    objectName := "yourObjectName"

    // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 建立OSSClient執行個體。
    // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 擷取儲存空間。
    bucket, err := client.Bucket(bucketName)
    if err != nil {
        handleError(err)
    }
    // 刪除檔案。
    err = bucket.DeleteObject(objectName)
    if err != nil {
        handleError(err)
    }
}

相關文檔

  • 建立儲存空間

    • 關於建立儲存空間的完整範例程式碼,請參見GitHub樣本

    • 關於建立儲存空間的API介面說明,請參見PutBucket

  • 上傳檔案

    • 關於上傳檔案的完整範例程式碼,請參見GitHub樣本

    • 關於上傳檔案的API介面說明,請參見PutObject

  • 下載檔案

    • 關於下載檔案的完整範例程式碼,請參見GitHub樣本

    • 關於下載檔案的API介面說明,請參見GetObject

  • 列舉檔案

  • 刪除檔案

    • 關於刪除單個檔案的完整範例程式碼,請參見GitHub樣本

    • 關於刪除單個檔案的API介面說明,請參見DeleteObject