本文介绍 Post 表单预签名的示例代码。
package main
import (
"context"
"fmt"
"github.com/volcengine/ve-tos-golang-sdk/v2/tos"
)
func checkErr(err error) {
if err != nil {
if serverErr, ok := err.(*tos.TosServerError); ok {
fmt.Println("Error:", serverErr.Error())
fmt.Println("Request ID:", serverErr.RequestID)
fmt.Println("Response Status Code:", serverErr.StatusCode)
fmt.Println("Response Header:", serverErr.Header)
fmt.Println("Response Err Code:", serverErr.Code)
fmt.Println("Response Err Msg:", serverErr.Message)
} else {
fmt.Println("Error:", err)
}
panic(err)
}
}
func main() {
var (
accessKey = os.Getenv("TOS_ACCESS_KEY")
secretKey = os.Getenv("TOS_SECRET_KEY")
// Bucket 对应的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com
endpoint = "https://tos-cn-beijing.volces.com"
region = "cn-beijing"
// 填写 BucketName
bucketName = "*** Provide your bucket name ***"
// 指定的 ObjectKey
objectKey = "*** Provide your object key ***"
ctx = context.Background()
)
// 初始化客户端
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))
checkErr(err)
// 上传签名
res, err := client.PreSignedPostSignature(ctx, &tos.PreSingedPostSignatureInput{
Bucket: bucketName,
Key: objectKey,
Expires: 3600,
})
fmt.Println("Policy:", res.Policy)
fmt.Println("OriginPolicy:", res.OriginPolicy)
fmt.Println("Algorithm:", res.Algorithm)
fmt.Println("Credential:", res.Credential)
fmt.Println("Date:", res.Date)
fmt.Println("Signature:", res.Signature)
}
关于 POST 表单预签名的详细信息,请参见基于浏览器上传的表单中包含签名。