七牛上传文件接口demo(server端)

第一步 下载sdk

获取七牛的sdk,我这里是用go写的

go get -u github.com/qiniu/api.v7

七牛的sdk依赖了 golang.org/x 包,直接使用go get可能下载不了,可以使用github上的一个工具来下

https://github.com/yanjunhui/god

下载好了以后,代码里需要使用到2个包

"github.com/qiniu/api.v7/auth/qbox"
"github.com/qiniu/api.v7/storage"

检查代码,如果没用到这2个包,那么检查一下qbox和storage包名是不是存在雷同.

第二步 获取必要信息

accessKey和secretKey

获取accessKey和secretKey这2个key可以登录七牛,然后进入
个人中心->个人信息->秘钥管理

[图片上传失败...(image-8c0117-1520215445963)]

bucket

bucket就是空间的名字.

[图片上传失败...(image-f3c0dc-1520215445963)]

key

是要上传的文件访问路径。比如:"foo/bar.jpg"。注意我们建议 key 不要以 '/' 开头。另外,key 为空字符串是合法的。(官方注释)

本地文件路径

这个就不多说了...

第三步 撸代码

package main

import (
    "github.com/qiniu/api.v7/auth/qbox"
    "github.com/qiniu/api.v7/storage"
    "fmt"
    "context"
)

// 自定义返回值结构体
type MyPutRet struct {
    Key    string
    Hash   string
    Fsize  int
    Bucket string
    Name   string
}


func main() {
    accessKey := "xxx"
    secretKey := "xxx"
    bucket:="blog"
    localFile := "/Users/yehao/Desktop/testqiniu.png"
    key := "testqiniu.png"

    putPolicy := storage.PutPolicy{
        Scope: bucket,
        ReturnBody: `{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`,
    }
    mac := qbox.NewMac(accessKey, secretKey)
    upToken := putPolicy.UploadToken(mac)
    cfg := storage.Config{}
    formUploader := storage.NewFormUploader(&cfg)
    ret := MyPutRet{}
    
    err := formUploader.PutFile(context.Background(), &ret, upToken, key, localFile, nil)
    if err != nil {
        fmt.Println(err)
        return
    }
    
    fmt.Println(ret.Bucket, ret.Key, ret.Fsize, ret.Hash, ret.Name)
}

你可能感兴趣的:(七牛上传文件接口demo(server端))