-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathoss.go
61 lines (49 loc) · 1.55 KB
/
oss.go
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
56
57
58
59
60
61
package main
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func upload() {
// 创建OSSClient实例。
client, err := oss.New("xxx", "xxx", "xxx") //建议oss内网地址[需要修改]
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
objectName := fmt.Sprintf("%s/k8s/jvm/%s/%s-%s", env,folder,podId,postfix) //正式
// 获取存储空间。
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
chunks, err := oss.SplitFileByPartNum(locaFilename, 3)
fd, err := os.Open(locaFilename)
defer fd.Close()
// 指定存储类型为标准存储。
storageType := oss.ObjectStorageClass(oss.StorageStandard)
// 步骤1:初始化一个分片上传事件,并指定存储类型为标准存储。
imur, err := bucket.InitiateMultipartUpload(objectName, storageType)
// 步骤2:上传分片。
var parts []oss.UploadPart
for _, chunk := range chunks {
fd.Seek(chunk.Offset, os.SEEK_SET)
// 调用UploadPart方法上传每个分片。
part, err := bucket.UploadPart(imur, fd, chunk.Size, chunk.Number)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
parts = append(parts, part)
}
// 指定Object的读写权限为公共读,默认为继承Bucket的读写权限。
objectAcl := oss.ObjectACL(oss.ACLPublicRead)
// 步骤3:完成分片上传,指定文件读写权限为公共读。
cmur, err := bucket.CompleteMultipartUpload(imur, parts, objectAcl)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("cmur:", cmur)
}