github.com/qiniu/go-sdk/v7@v7.27.0/examples/create_uptoken/main.go (about) 1 package main 2 3 import ( 4 "encoding/base64" 5 "fmt" 6 "os" 7 "strings" 8 9 "github.com/qiniu/go-sdk/v7/auth" 10 "github.com/qiniu/go-sdk/v7/storage" 11 ) 12 13 var ( 14 accessKey = os.Getenv("QINIU_ACCESS_KEY") 15 secretKey = os.Getenv("QINIU_SECRET_KEY") 16 bucket = os.Getenv("QINIU_TEST_BUCKET") 17 ) 18 19 func main() { 20 // 简单上传凭证 21 putPolicy := storage.PutPolicy{ 22 Scope: bucket, 23 } 24 mac := auth.New(accessKey, secretKey) 25 upToken := putPolicy.UploadToken(mac) 26 fmt.Println(upToken) 27 28 // 设置上传凭证有效期 29 putPolicy = storage.PutPolicy{ 30 Scope: bucket, 31 } 32 putPolicy.Expires = 7200 // 示例2小时有效期 33 34 upToken = putPolicy.UploadToken(mac) 35 fmt.Println(upToken) 36 37 // 覆盖上传凭证 38 // 需要覆盖的文件名 39 keyToOverwrite := "qiniu.mp4" 40 putPolicy = storage.PutPolicy{ 41 Scope: fmt.Sprintf("%s:%s", bucket, keyToOverwrite), 42 } 43 upToken = putPolicy.UploadToken(mac) 44 fmt.Println(upToken) 45 46 // 自定义上传回复凭证 47 putPolicy = storage.PutPolicy{ 48 Scope: bucket, 49 ReturnBody: `{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`, 50 } 51 upToken = putPolicy.UploadToken(mac) 52 fmt.Println(upToken) 53 54 // 带回调业务服务器的凭证(JSON方式) 55 putPolicy = storage.PutPolicy{ 56 Scope: bucket, 57 CallbackURL: "http://api.example.com/qiniu/upload/callback", 58 CallbackBody: `{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`, 59 CallbackBodyType: "application/json", 60 } 61 upToken = putPolicy.UploadToken(mac) 62 fmt.Println(upToken) 63 64 // 带回调业务服务器的凭证(URL方式) 65 putPolicy = storage.PutPolicy{ 66 Scope: bucket, 67 CallbackURL: "http://api.example.com/qiniu/upload/callback", 68 CallbackBody: "key=$(key)&hash=$(etag)&bucket=$(bucket)&fsize=$(fsize)&name=$(x:name)", 69 } 70 upToken = putPolicy.UploadToken(mac) 71 fmt.Println(upToken) 72 73 // 带数据处理的凭证 74 saveMp4Entry := base64.URLEncoding.EncodeToString([]byte(bucket + ":avthumb_test_target.mp4")) 75 saveJpgEntry := base64.URLEncoding.EncodeToString([]byte(bucket + ":vframe_test_target.jpg")) 76 // 数据处理指令,支持多个指令 77 avthumbMp4Fop := "avthumb/mp4|saveas/" + saveMp4Entry 78 vframeJpgFop := "vframe/jpg/offset/1|saveas/" + saveJpgEntry 79 // 连接多个操作指令 80 persistentOps := strings.Join([]string{avthumbMp4Fop, vframeJpgFop}, ";") 81 pipeline := "test" 82 putPolicy = storage.PutPolicy{ 83 Scope: bucket, 84 PersistentOps: persistentOps, 85 PersistentPipeline: pipeline, 86 PersistentNotifyURL: "http://api.example.com/qiniu/pfop/notify", 87 } 88 upToken = putPolicy.UploadToken(mac) 89 fmt.Println(upToken) 90 }