zhangqian
2023-08-29 e668092cf0bca471e665580c255c04a6ffc3cb8f
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
62
63
64
65
66
67
package upload
 
import (
    "mime/multipart"
 
    "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
    "github.com/pkg/errors"
    "srm/global"
)
 
var HuaWeiObs = new(Obs)
 
type Obs struct{}
 
func NewHuaWeiObsClient() (client *obs.ObsClient, err error) {
    return obs.New(global.GVA_CONFIG.HuaWeiObs.AccessKey, global.GVA_CONFIG.HuaWeiObs.SecretKey, global.GVA_CONFIG.HuaWeiObs.Endpoint)
}
 
func (o *Obs) UploadFile(file *multipart.FileHeader) (string, string, error) {
    // var open multipart.File
    open, err := file.Open()
    if err != nil {
        return "", "", err
    }
    defer open.Close()
    filename := file.Filename
    input := &obs.PutObjectInput{
        PutObjectBasicInput: obs.PutObjectBasicInput{
            ObjectOperationInput: obs.ObjectOperationInput{
                Bucket: global.GVA_CONFIG.HuaWeiObs.Bucket,
                Key:    filename,
            },
            ContentType: file.Header.Get("content-type"),
        },
        Body: open,
    }
 
    var client *obs.ObsClient
    client, err = NewHuaWeiObsClient()
    if err != nil {
        return "", "", errors.Wrap(err, "获取华为对象存储对象失败!")
    }
 
    _, err = client.PutObject(input)
    if err != nil {
        return "", "", errors.Wrap(err, "文件上传失败!")
    }
    filepath := global.GVA_CONFIG.HuaWeiObs.Path + "/" + filename
    return filepath, filename, err
}
 
func (o *Obs) DeleteFile(key string) error {
    client, err := NewHuaWeiObsClient()
    if err != nil {
        return errors.Wrap(err, "获取华为对象存储对象失败!")
    }
    input := &obs.DeleteObjectInput{
        Bucket: global.GVA_CONFIG.HuaWeiObs.Bucket,
        Key:    key,
    }
    var output *obs.DeleteObjectOutput
    output, err = client.DeleteObject(input)
    if err != nil {
        return errors.Wrapf(err, "删除对象(%s)失败!, output: %v", key, output)
    }
    return nil
}