第一步 下載sdk
獲取七牛的sdk,我這里是用go寫(xiě)的
go get -u github.com/qiniu/api.v7
七牛的sdk依賴(lài)了 golang.org/x
包,直接使用go get可能下載不了,可以使用github上的一個(gè)工具來(lái)下
下載好了以后,代碼里需要使用到2個(gè)包
"github.com/qiniu/api.v7/auth/qbox"
"github.com/qiniu/api.v7/storage"
檢查代碼,如果沒(méi)用到這2個(gè)包,那么檢查一下qbox和storage包名是不是存在雷同.
第二步 獲取必要信息
accessKey和secretKey
獲取accessKey和secretKey這2個(gè)key可以登錄七牛,然后進(jìn)入
個(gè)人中心->個(gè)人信息->秘鑰管理
[圖片上傳失敗...(image-8c0117-1520215445963)]
bucket
bucket就是空間的名字.
[圖片上傳失敗...(image-f3c0dc-1520215445963)]
key
是要上傳的文件訪問(wèn)路徑信夫。比如:"foo/bar.jpg"癌幕。注意我們建議 key 不要以 '/' 開(kāi)頭。另外舔箭,key 為空字符串是合法的。(官方注釋)
本地文件路徑
這個(gè)就不多說(shuō)了...
第三步 擼代碼
package main
import (
"github.com/qiniu/api.v7/auth/qbox"
"github.com/qiniu/api.v7/storage"
"fmt"
"context"
)
// 自定義返回值結(jié)構(gòu)體
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)
}