七牛Golang SDK简单使用教程

乐正浩博
2023-12-01

最近试用了一下七牛的存储服务, 由于最近在使用golang,所以就拿七牛的golang sdk来进行相应的操作。 为了不至于以后使用时,总是去查七牛的文档(七牛的文档有些地方需要来回查), 所以在此简单做一个基本的使用教程。

安装

go get -u qiniupkg.com/api.v7
注意安装时,应该使用如上的命令中的连接,而不是七牛官方文档当中的连接。

初始化

使用如下代码进行初始化:

import "qiniupkg.com/api.v7/kodo"

var (
  ACCESS_KEY = ""
  SECRET_KEY = ""
  DEFAULT_BUCKET_NAME = ""
)

func main() {
  kodo.SetMac(ACCESS_KEY, SECRET_KEY)
  zone := 0
  qiniuClient := kodo.New(zone, nil)
  bucket := qiniuClient.Bucket(DEFAULT_BUCKET_NAME)
  netContext := context.Background()
  }

该代码是基于最新的api.v7代码,七牛官方文档当中提及的代码并非根据最新代码而来。

上传文件

按照七牛的官方文档,上传文件的流程如下(上传文件发生在客户端而非业务服务端时):
1. 业务服务器颁发 上传凭证给客户端(终端用户)
2. 客户端凭借 上传凭证 上传文件到七牛
3. 在七牛获得完整数据后,发起一个 HTTP 请求回调到业务服务器
4. 业务服务器保存相关信息,并返回一些信息给七牛
5. 七牛原封不动地将这些信息转发给客户端(终端用户)

生成上传凭证

业务服务器生成上传凭证代码:

  key := generateFileKey() //根据自己的规则生成所需要的key,也可以不指定而由七牛服务器自动生成(即使用文件的hash值)
  //指定上传策略
  policy := &kodo.PutPolicy {
    Scope: DEFAULT_BUCKET_NAME + ":" + key,
    Expires: 3600, //如果不指定,默认的有效期为3600s
    CallbackUrl: "http://i.test.com/qiniu/callback",
    CallbackBody: "key=$(key)&loation=$(x:location)",
  }
  uploadToken := qiniuClient.MakeUptoken(policy)

上传策略暂时可以先指定如上的几部分,如果需要的话可以根据实际情况指定其他的参数。其中:CallbackBody的形式一般而言应该如上述形式,其中的key是指七牛的魔法变量,而$(x:location)这样的是用户自定义变量,这些自定义变量必须使用x:开头(由客户端在上传文件到七牛服务器时同时指定这些变量的值)。
其他的上传策略相关项可以查看七牛的官方文档。七牛上传策略

业务服务器直接上传文件

业务服务器处理回调

业务服务器处理上传文件的回调(URL在上传策略当中的CallbackUrl当中指定)。严格来讲该部分已经不再属于golang sdk的使用范畴,但是由于我们使用golang sdk是作为业务服务器的一部分来使用(而不是作为客户端),所以此处的业务服务器回调处理也一并在这儿列出。
回调处理,首先应该验证回调的request是否是合法的。具体可以见七牛的官方文档[七牛回调合法性][qnhdhfx]。此处需要注意的是,验证回调合法性的时候,是需要读取整个request body的,所以此处读取request body的时候是需要保存到变量当中的,避免验证完合法性之后再次读取request body的时候读取的内容为空。
这之后就可以正常进行业务处理了。

未完待续:由于某些原因,此文暂时未完成,等有时间补充完整。


 类似资料: