分享
七牛云存储--内存put示例(go sdk)
zhangqingping · · 3940 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
啥都不说了,居然有文档,有git为啥不提供example?
自己看代码,琢磨了一下,原来是要这么用的。这里不得不吐槽一下package的命名,为啥要去io?golang自带系统包名就有io啊,哥哥。
从git上线下载包,go get -u github.com/qiniu/api
然后,贴代码:
package main import ( "bufio" "fmt" . "github.com/qiniu/api/conf" qnio "github.com/qiniu/api/io" "github.com/qiniu/api/rs" "os" ) func main() { ACCESS_KEY = "xxxxxxxx" SECRET_KEY = "xxxxxxxx" var ret qnio.PutRet var extra = &qnio.PutExtra{ MimeType: "image/jepg", CheckCrc: 0, } key := "1024x1024.jpg" scope := fmt.Sprintf("skypixeltest:%s", key) putPolicy := rs.PutPolicy{ Scope: scope, // Expires: expires, } uptoken := putPolicy.Token(nil) fi, err := os.Open("/Users/qpzhang/Downloads/1024x1024.jpg") st, _ := fi.Stat() if err != nil { panic(err) } defer fi.Close() data := bufio.NewReader(fi) fmt.Println("size ", st.Size()) err = qnio.Put2(nil, &ret, uptoken, key, data, st.Size(), extra) if err != nil { fmt.Println(err) } else { fmt.Println("put sucess......", ret) } }
scope的说明参考官方:
http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
再吐槽一下,说明文档和变量名不一样,你这是要闹哪样。说明文档都是用json的变量名。
type PutPolicy struct { Scope string `json:"scope"` Expires uint32 `json:"deadline"` // 截止时间(以秒为单位) InsertOnly uint16 `json:"exclusive,omitempty"` // 若非0, 即使Scope为 Bucket:Key 的形式也是insert only DetectMime uint16 `json:"detectMime,omitempty"` // 若非0, 则服务端根据内容自动确定 MimeType FsizeLimit int64 `json:"fsizeLimit,omitempty"` SaveKey string `json:"saveKey,omitempty"` CallbackUrl string `json:"callbackUrl,omitempty"` CallbackBody string `json:"callbackBody,omitempty"` ReturnUrl string `json:"returnUrl,omitempty"` ReturnBody string `json:"returnBody,omitempty"` PersistentOps string `json:"persistentOps,omitempty"` PersistentNotifyUrl string `json:"persistentNotifyUrl,omitempty"` PersistentPipeline string `json:"persistentPipeline,omitempty"` AsyncOps string `json:"asyncOps,omitempty"` EndUser string `json:"endUser,omitempty"` }
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3940 次点击
上一篇:Go Flow Control
下一篇:goagent配置
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
啥都不说了,居然有文档,有git为啥不提供example?
自己看代码,琢磨了一下,原来是要这么用的。这里不得不吐槽一下package的命名,为啥要去io?golang自带系统包名就有io啊,哥哥。
从git上线下载包,go get -u github.com/qiniu/api
然后,贴代码:
package main import ( "bufio" "fmt" . "github.com/qiniu/api/conf" qnio "github.com/qiniu/api/io" "github.com/qiniu/api/rs" "os" ) func main() { ACCESS_KEY = "xxxxxxxx" SECRET_KEY = "xxxxxxxx" var ret qnio.PutRet var extra = &qnio.PutExtra{ MimeType: "image/jepg", CheckCrc: 0, } key := "1024x1024.jpg" scope := fmt.Sprintf("skypixeltest:%s", key) putPolicy := rs.PutPolicy{ Scope: scope, // Expires: expires, } uptoken := putPolicy.Token(nil) fi, err := os.Open("/Users/qpzhang/Downloads/1024x1024.jpg") st, _ := fi.Stat() if err != nil { panic(err) } defer fi.Close() data := bufio.NewReader(fi) fmt.Println("size ", st.Size()) err = qnio.Put2(nil, &ret, uptoken, key, data, st.Size(), extra) if err != nil { fmt.Println(err) } else { fmt.Println("put sucess......", ret) } }
scope的说明参考官方:
http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
再吐槽一下,说明文档和变量名不一样,你这是要闹哪样。说明文档都是用json的变量名。
type PutPolicy struct { Scope string `json:"scope"` Expires uint32 `json:"deadline"` // 截止时间(以秒为单位) InsertOnly uint16 `json:"exclusive,omitempty"` // 若非0, 即使Scope为 Bucket:Key 的形式也是insert only DetectMime uint16 `json:"detectMime,omitempty"` // 若非0, 则服务端根据内容自动确定 MimeType FsizeLimit int64 `json:"fsizeLimit,omitempty"` SaveKey string `json:"saveKey,omitempty"` CallbackUrl string `json:"callbackUrl,omitempty"` CallbackBody string `json:"callbackBody,omitempty"` ReturnUrl string `json:"returnUrl,omitempty"` ReturnBody string `json:"returnBody,omitempty"` PersistentOps string `json:"persistentOps,omitempty"` PersistentNotifyUrl string `json:"persistentNotifyUrl,omitempty"` PersistentPipeline string `json:"persistentPipeline,omitempty"` AsyncOps string `json:"asyncOps,omitempty"` EndUser string `json:"endUser,omitempty"` }