本节介绍如何快速使用OSS Go SDK完成常见操做,如建立存储空间(Bucket)、上传/下载文件(Object)等。java
先下载包github.com/aliyun/aliyun-oss-go-sdk/oss到GOPATH下git
存储空间是OSS全局命名空间,至关于数据的容器,能够存储若干文件。 如下代码用于新建一个存储空间:github
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() {
// Endpoint以杭州为例,其它Region请按实际状况填写。
endpoint := "http://oss-cn-hangzhou.aliyuncs.com"
// 阿里云主帐号AccessKey拥有全部API的访问权限,风险很高。强烈建议您建立并使用RAM帐号进行API访问或平常运维,请登陆 https://ram.console.aliyun.com 建立RAM帐号。
accessKeyId := "<yourAccessKeyId>"
accessKeySecret := "<yourAccessKeySecret>"
bucketName := "<yourBucketName>"
// 建立OSSClient实例。
client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
if err != nil {
handleError(err)
}
// 建立存储空间。
err = client.CreateBucket(bucketName)
if err != nil {
handleError(err)
}
}复制代码
存储空间的命名规范,请参见基本概念中的命名规范。建立存储空间详情,请参见建立存储空间。golang
获取endpoint信息,请参见访问域名和数据中心文档。docker
如下代码用于上传文件至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() {
// Endpoint以杭州为例,其它Region请按实际状况填写。
endpoint := "http://oss-cn-hangzhou.aliyuncs.com"
// 阿里云主帐号AccessKey拥有全部API的访问权限,风险很高。强烈建议您建立并使用RAM帐号进行API访问或平常运维,请登陆 https://ram.console.aliyun.com 建立RAM帐号。
accessKeyId := "<yourAccessKeyId>"
accessKeySecret := "<yourAccessKeySecret>"
bucketName := "<yourBucketName>"
// <yourObjectName>上传文件到OSS时须要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
objectName := "<yourObjectName>"
// <yourLocalFileName>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
localFileName := "<yourLocalFileName>"
// 建立OSSClient实例。
client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
if err != nil {
handleError(err)
}
// 获取存储空间。
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() {
// Endpoint以杭州为例,其它Region请按实际状况填写。
endpoint := "http://oss-cn-hangzhou.aliyuncs.com"
// 阿里云主帐号AccessKey拥有全部API的访问权限,风险很高。强烈建议您建立并使用RAM帐号进行API访问或平常运维,请登陆 https://ram.console.aliyun.com 建立RAM帐号。
accessKeyId := "<yourAccessKeyId>"
accessKeySecret := "<yourAccessKeySecret>"
bucketName := "<yourBucketName>"
// <yourObjectName>从OSS下载文件时须要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
objectName := "<yourObjectName>"
downloadedFileName := "<yourDownloadedFileName>"
// 建立OSSClient实例。
client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
if err != nil {
handleError(err)
}
// 获取存储空间。
bucket, err := client.Bucket(bucketName)
if err != nil {
handleError(err)
}
// 下载文件。
err = bucket.GetObjectToFile(objectName, downloadedFileName)
if err != nil {
handleError(err)
}
}复制代码
如下代码用于列举指定存储空间下的文件。默认列举100个文件。spa
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() {
// 建立OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
HandleError(err)
}
// 获取存储空间。
bucketName := "<yourBucketName>"
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
}
}
}复制代码
如下代码用于删除指定文件:code
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() {
// Endpoint以杭州为例,其它Region请按实际状况填写。
endpoint := "http://oss-cn-hangzhou.aliyuncs.com"
// 阿里云主帐号AccessKey拥有全部API的访问权限,风险很高。强烈建议您建立并使用RAM帐号进行API访问或平常运维,请登陆 https://ram.console.aliyun.com 建立RAM帐号。
accessKeyId := "<yourAccessKeyId>"
accessKeySecret := "<yourAccessKeySecret>"
bucketName := "<yourBucketName>"
// <yourObjectName>表示删除OSS文件时须要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
objectName := "<yourObjectName>"
// 建立OSSClient实例。
client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
if err != nil {
handleError(err)
}
// 获取存储空间。
bucket, err := client.Bucket(bucketName)
if err != nil {
handleError(err)
}
// 删除文件。
err = bucket.DeleteObject(objectName)
if err != nil {
handleError(err)
}
}复制代码
删除文件详情请参见管理文件中的删除文件。htm
做者:小碗汤,一位热爱、认真写做的小伙,目前维护原创公众号:『个人小碗汤』,专一于写golang、docker、kubernetes等知识等提高硬实力的文章,期待你的关注。转载说明:务必注明来源(注明:来源于公众号:个人小碗汤, 做者:小碗汤)
做者:小碗汤,一位热爱、认真写做的小伙,目前维护原创公众号:『个人小碗汤』,专一于写go语言、docker、kubernetes、java等开发、运维知识等提高硬实力的文章,期待你的关注。转载说明:务必注明来源(注明:来源于公众号:个人小碗汤,做者:小碗汤)