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  }