搬瓦工上使用七牛云存储遇到的坑
博客的图床采用七牛云存储,代码迁移至搬瓦工后,图片上传时就遇到”invalid token”的问题。
原来的代码如下:
func QiniuUploadImage(name string, content []byte) (string, error) {
conf.ACCESS_KEY = QINIU_ACCESS_KEY
conf.SECRET_KEY = QINIU_ACCESS_SECRET
c := kodo.New(0, nil)
policy := &kodo.PutPolicy{
Scope: QINIU_BUCKET + ":" + name,
//设置Token过期时间
Expires: QINIU_EXPIRE_SECONDS,
InsertOnly: 1, //只允许上传 不允许覆盖图片名已存在的文件
}
token := c.MakeUptoken(policy)
zone := 0
uploader := kodocli.NewUploader(zone, nil)
var ret PutRet
res := uploader.Put(nil, &ret, token, name, bytes.NewBuffer(content), int64(len(content)), nil)
if res != nil {
log.Println("QiniuUploadImage failed:", res)
return "", errors.New("upload to qiniu failed")
}
return PrefixImage(name), nil
}
修改后代码如下:
func QiniuUploadImage(name string, content []byte) (string, error) {
conf.ACCESS_KEY = QINIU_ACCESS_KEY
conf.SECRET_KEY = QINIU_ACCESS_SECRET
c := kodo.New(0, nil)
p := c.Bucket(QINIU_BUCKET)
var ret PutRet
res := p.Put(nil, &ret, name, bytes.NewBuffer(content), int64(len(content)), nil)
if res != nil {
log.Println("QiniuUploadImage failed:", res)
return "", errors.New("upload to qiniu failed")
}
return PrefixImage(name), nil
}
如果您是在业务服务器(服务器端)调用七牛云存储的服务,请使用 qiniupkg.com/api.v7/kodo。 如果您是在客户端(比如:Android/iOS 设备、Windows/Mac/Linux 桌面环境)调用七牛云存储的服务,请使用 qiniupkg.com/api.v7/kodocli。注意,在这种场合下您不应该在任何地方配置 AccessKey/SecretKey。泄露 AccessKey/SecretKey 如同泄露您的用户名/密码一样十分危险,会影响您的数据安全。
Qiniu SDK for Golang (v7.x)