【笔记】Go语言实现文件上传到七牛云Kodo对象存储

前言

Go语言实现文件上传到七牛云Kodo对象存储

下载依赖

1
go get github.com/qiniu/go-sdk/v7

通过Reader上传文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package main

import (
"context"
"fmt"
"github.com/qiniu/go-sdk/v7/storagev2/credentials"
"github.com/qiniu/go-sdk/v7/storagev2/http_client"
"github.com/qiniu/go-sdk/v7/storagev2/region"
"github.com/qiniu/go-sdk/v7/storagev2/uploader"
)

// PutRet 上传凭据
type PutRet struct {
Key string
Hash string
Fsize int
Bucket string
Name string
}

func main() {

var regionCode = "z0" // 地区
var accessKey = ""
var secretKey = ""
var bucketName = ""
var dirName = "<dir_name>" // 云上的目录路径
var filename = "<file_name>" // 云上的文件名
var domainPublic = "http://example.com" // 公开资源访问域名

// 定义源文件路径
var src = fmt.Sprintf("%s/%s", dirName, filename)

// 定义认证信息
var mac = credentials.NewCredentials(accessKey, secretKey)

// 定义上传凭据
var putRet PutRet

// 通过上传管理器上传文件
err := uploader.NewUploadManager(&uploader.UploadManagerOptions{
Options: http_client.Options{
Regions: region.GetRegionByID(regionCode, true),
Credentials: mac,
},
}).UploadReader(context.Background(), reader, &uploader.ObjectOptions{
BucketName: bucketName,
ObjectName: &src,
FileName: src,
}, putRet)

// 拼接公开资源访问URL
fmt.Println(fmt.Sprintf("%s/%s", domainPublic, putRet.Key))

}

完成

参考文献

七牛云官方文档