首页 > 其他分享 > Go 项目中使用阿里云 OSS 存储服务

Go 项目中使用阿里云 OSS 存储服务

时间:2023-09-06 21:01:25浏览次数:33  
标签:存储 nil err OSS Bucket Client Go oss

1. 导入依赖

首先,你需要导入阿里云 OSS 的 Go SDK 包,以便在你的 Go 项目中使用。你可以在你的项目目录下运行以下命令来下载依赖:

go get github.com/aliyun/aliyun-oss-go-sdk/oss

2. 配置连接

在你的 Go 代码中,首先创建一个连接阿里云 OSS 的函数,例如 Connect(),用于配置连接参数,如 Endpoint、Access Key ID 和 Access Key Secret。这些参数可以在阿里云的控制台上获取。

package OSS

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

var (
    Client *oss.Client // 公共的 OSSClient 实例
    Bucket *oss.Bucket // 公共的 Bucket 实例
)

func handleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func Connect() {
    endpoint := "http://oss-cn-nanjing.aliyuncs.com"
    accessKeyId := "YourAccessKeyId"
    accessKeySecret := "YourAccessKeySecret"
    bucketName := "YourBucketName"

    // 创建OSSClient实例。
    client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
    if err != nil {
        handleError(err)
    }

    // 获取Bucket
    bucket, err := client.Bucket(bucketName)
    if err != nil {
        handleError(err)
    }

    // 将创建的 Client 和 Bucket 实例保存到全局变量中,以便在整个应用程序中使用。
    Client = client
    Bucket = bucket
}

3. 使用阿里云 OSS

一旦连接配置完成,你就可以使用 ClientBucket 对象来执行各种操作,比如上传、下载文件,生成签名 URL 等。以下是一些基本的示例:

上传文件到 OSS

func UploadFile(localFilePath string, remoteObjectName string) error {
    // 打开本地文件
    file, err := os.Open(localFilePath)
    if err != nil {
        return err
    }
    defer file.Close()

    // 上传文件到 OSS
    err = Bucket.PutObject(remoteObjectName, file)
    return err
}

生成签名 URL

func GetSignedURL(objectName string) (string, error) {
    // 签名 URL 的有效时间,单位为秒
    expiresInSeconds := 3600

    // 生成签名 URL
    signedURL, err := Bucket.SignURL(objectName, oss.HTTPGet, int64(expiresInSeconds), oss.Process(""))
    if err != nil {
        return "", err
    }

    return signedURL, nil
}

这些是阿里云 OSS 的基本用法示例。你可以根据你的项目需求进一步扩展功能,比如删除文件、列出文件、设置文件 ACL 等。

标签:存储,nil,err,OSS,Bucket,Client,Go,oss
From: https://blog.51cto.com/u_16145366/7390598

相关文章

  • 存储器
         ......
  • RunnerGo怎么做性能测试
    RunnerGo是一个功能强大,使用简单的性能测试平台,它基于go语言开发,支持接口管理、自动化测试、性能测试等功能。RunnerGo有什么特点支持并发模式、错误率模式、阶梯模式、每秒请求数模式、响应时间模式等多种压测模式,支持自定义分配机器运行,模拟真实场景压测。可视化接口Flow,立即体验......
  • RunnerGo怎么做性能测试
    RunnerGo是一个功能强大,使用简单的性能测试平台,它基于go语言开发,支持接口管理、自动化测试、性能测试等功能。RunnerGo有什么特点支持并发模式、错误率模式、阶梯模式、每秒请求数模式、响应时间模式等多种压测模式,支持自定义分配机器运行,模拟真实场景压测。可视化接口Flow,立即......
  • 视频集中存储/云存储/磁盘阵列EasyCVR平台分组批量绑定/取消设备功能详解
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台视频能力丰富灵活,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视频监控的能力,也具备接入AI智能分......
  • 安防监控/视频汇聚/云存储/AI视频智能算法引擎:遛狗AI检测算法详解
    根据最新修订发布的《中华人民共和国动物防疫法》规定:遛狗不栓绳,养狗不办证、未定期接种疫苗等行为都是违法行为。作为一个合格的“铲屎官"出门遛狗一定要牵好狗绳,保护他人和爱犬的安全。但就算法律明文规定,还是有很多人无视法律法规,在外遛狗不牵绳,任其自由活动。在日常管理中,遛狗......
  • 安防监控/视频汇聚/视频云存储EasyCVR平台v3.3版本AI智能分析网关V3接入教程2.0
    TSINGSEE的边缘计算硬件智能分析网关V3内置多种AI算法模型,包括人脸、人体、车辆、车牌、行为分析、烟火、入侵、聚集、安全帽、反光衣等等,可应用在安全生产、通用园区、智慧食安、智慧城管、智慧煤矿等场景中。将网关硬件结合TSINGSEE青犀的视频汇聚/安防监控/视频融合平台EasyCVR......
  • 视频云存储/安防监控/AI分析/视频AI智能分析网关:垃圾满溢算法
    随着我国科技的发展和城市化进程加快,大家对于生活环境以及空气质量更加重视,要求越来越严格。城市街道垃圾以及生活区垃圾满溢已经成为城市之痛。乱扔垃圾,垃圾不入桶这些行为已经严重影响到了城市的美化问题。特别是炎热的夏日和雨水季节,大量垃圾堆放会释放有毒有害气体,暴雨过后,漂浮......
  • 视频集中存储/云存储/磁盘阵列EasyCVR平台分组批量绑定/取消设备功能详解
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台视频能力丰富灵活,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视频监控的能力,也具备接入AI智能分......
  • 安防监控/视频汇聚/云存储/AI视频智能算法引擎系统:遛狗检测算法详解
    根据最新修订发布的《中华人民共和国动物防疫法》规定:遛狗不栓绳,养狗不办证、未定期接种疫苗等行为都是违法行为。作为一个合格的“铲屎官"出门遛狗一定要牵好狗绳,保护他人和爱犬的安全。但就算法律明文规定,还是有很多人无视法律法规,在外遛狗不牵绳,任其自由活动。在日常管理中,......
  • 编写涉及多个数据库的 MySQL 存储过程注意事项
    在编写涉及多个数据库的MySQL存储过程时,有一些注意事项需要考虑。以下是一些重要的注意事项:数据库权限:确保您在存储过程中使用的数据库用户具有足够的权限来访问和操作涉及的所有数据库。这包括对表、视图、存储过程等对象的读取和写入权限。数据库连接:在存储过程中,您可能......