搬瓦工上使用七牛云存储遇到的坑

博客的图床采用七牛云存储,代码迁移至搬瓦工后,图片上传时就遇到”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)

评论