本節介紹如何快速使用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介面說明,請參見GetBucket (ListObjects)。
刪除檔案
關於刪除單個檔案的完整範例程式碼,請參見GitHub樣本。
關於刪除單個檔案的API介面說明,請參見DeleteObject。