当前位置:   article > 正文

golang操作阿里云对象存储——OSS | 创建桶、上传、下载、查询、删除数据_go对aliyun文件删除代码

go对aliyun文件删除代码

本节介绍如何快速使用OSS Go SDK完成常见操作,如创建存储空间(Bucket)、上传/下载文件(Object)等。

先下载包github.com/aliyun/aliyun-oss-go-sdk/oss到GOPATH下

创建存储空间

存储空间是OSS全局命名空间,相当于数据的容器,可以存储若干文件。 以下代码用于新建一个存储空间:

  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. // Endpoint以杭州为例,其它Region请按实际情况填写。
  13. endpoint := "http://oss-cn-hangzhou.aliyuncs.com"
  14. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  15. accessKeyId := "<yourAccessKeyId>"
  16. accessKeySecret := "<yourAccessKeySecret>"
  17. bucketName := "<yourBucketName>"
  18. // 创建OSSClient实例。
  19. client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
  20. if err != nil {
  21. handleError(err)
  22. }
  23. // 创建存储空间。
  24. err = client.CreateBucket(bucketName)
  25. if err != nil {
  26. handleError(err)
  27. }
  28. }

存储空间的命名规范,请参见基本概念中的命名规范。创建存储空间详情,请参见创建存储空间。

获取endpoint信息,请参见访问域名和数据中心文档。

上传文件

以下代码用于上传文件至OSS:

  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. // Endpoint以杭州为例,其它Region请按实际情况填写。
  13. endpoint := "http://oss-cn-hangzhou.aliyuncs.com"
  14. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  15. accessKeyId := "<yourAccessKeyId>"
  16. accessKeySecret := "<yourAccessKeySecret>"
  17. bucketName := "<yourBucketName>"
  18. // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
  19. objectName := "<yourObjectName>"
  20. // <yourLocalFileName>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
  21. localFileName := "<yourLocalFileName>"
  22. // 创建OSSClient实例。
  23. client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
  24. if err != nil {
  25. handleError(err)
  26. }
  27. // 获取存储空间。
  28. bucket, err := client.Bucket(bucketName)
  29. if err != nil {
  30. handleError(err)
  31. }
  32. // 上传文件。
  33. err = bucket.PutObjectFromFile(objectName, localFileName)
  34. if err != nil {
  35. handleError(err)
  36. }
  37. }

下载文件

以下代码用于下载文件到本地:

  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. // Endpoint以杭州为例,其它Region请按实际情况填写。
  13. endpoint := "http://oss-cn-hangzhou.aliyuncs.com"
  14. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  15. accessKeyId := "<yourAccessKeyId>"
  16. accessKeySecret := "<yourAccessKeySecret>"
  17. bucketName := "<yourBucketName>"
  18. // <yourObjectName>从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
  19. objectName := "<yourObjectName>"
  20. downloadedFileName := "<yourDownloadedFileName>"
  21. // 创建OSSClient实例。
  22. client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
  23. if err != nil {
  24. handleError(err)
  25. }
  26. // 获取存储空间。
  27. bucket, err := client.Bucket(bucketName)
  28. if err != nil {
  29. handleError(err)
  30. }
  31. // 下载文件。
  32. err = bucket.GetObjectToFile(objectName, downloadedFileName)
  33. if err != nil {
  34. handleError(err)
  35. }
  36. }

列举文件

以下代码用于列举指定存储空间下的文件。默认列举100个文件。

  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. // 创建OSSClient实例。
  13. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  14. if err != nil {
  15. HandleError(err)
  16. }
  17. // 获取存储空间。
  18. bucketName := "<yourBucketName>"
  19. bucket, err := client.Bucket(bucketName)
  20. if err != nil {
  21. HandleError(err)
  22. }
  23. // 列举文件。
  24. marker := ""
  25. for {
  26. lsRes, err := bucket.ListObjects(oss.Marker(marker))
  27. if err != nil {
  28. HandleError(err)
  29. }
  30. // 打印列举文件,默认情况下一次返回100条记录。
  31. for _, object := range lsRes.Objects {
  32. fmt.Println("Bucket: ", object.Key)
  33. }
  34. if lsRes.IsTruncated {
  35. marker = lsRes.NextMarker
  36. } else {
  37. break
  38. }
  39. }
  40. }

删除文件

以下代码用于删除指定文件:

  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. // Endpoint以杭州为例,其它Region请按实际情况填写。
  13. endpoint := "http://oss-cn-hangzhou.aliyuncs.com"
  14. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  15. accessKeyId := "<yourAccessKeyId>"
  16. accessKeySecret := "<yourAccessKeySecret>"
  17. bucketName := "<yourBucketName>"
  18. // <yourObjectName>表示删除OSS文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
  19. objectName := "<yourObjectName>"
  20. // 创建OSSClient实例。
  21. client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
  22. if err != nil {
  23. handleError(err)
  24. }
  25. // 获取存储空间。
  26. bucket, err := client.Bucket(bucketName)
  27. if err != nil {
  28. handleError(err)
  29. }
  30. // 删除文件。
  31. err = bucket.DeleteObject(objectName)
  32. if err != nil {
  33. handleError(err)
  34. }
  35. }

删除文件详情请参见管理文件中的删除文件。

参考

阿里云对象存储OSS对接文档

作者简介

作者:小碗汤,一位热爱、认真写作的小伙,目前维护原创公众号:『我的小碗汤』,专注于写golang、docker、kubernetes等知识等提升硬实力的文章,期待你的关注。转载说明:务必注明来源(注明:来源于公众号:我的小碗汤, 作者:小碗汤)

作者简洁

作者:小碗汤,一位热爱、认真写作的小伙,目前维护原创公众号:『我的小碗汤』,专注于写go语言、docker、kubernetes、java等开发、运维知识等提升硬实力的文章,期待你的关注。转载说明:务必注明来源(注明:来源于公众号:我的小碗汤,作者:小碗汤)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/883321
推荐阅读
相关标签
  

闽ICP备14008679号