阿里云oss对象存储的go服务端签名直传扩展 | go作品分享 -金年会app官方网

通过web端上传数据到oss. 服务端签名直传并设置上传回调.

安装

git仓库

go get -u github.com/alphasnow/aliyun-oss-appserver-go

示例

生成授权

token := appserver.newtoken(&config{
    accesskeyid:     "youraccesskeyid",
    accesskeysecret: "youraccesskeysecret",
    host:            "https://bucket-name.oss-cn-hangzhou.aliyuncs.com",
    directory:       "user-dir-prefix/",
    expiresecond:    600,
    // 回调只支持 putobject, postobject, completemultipartupload
    callbackurl:     "http://domain.com/oss/callback", 
})
posttoken, _ := token.generate()
posttokenjson, _ := json.marshal(posttoken)
//{
//    "ossaccesskeyid": "youraccesskeyid",
//    "policy": "eyjlehbpcmf0aw9uijoimjayns0wms0wmvqwmdowmdowmfoilcjjb25kaxrpb25zijpbwyjzdgfydhmtd2l0acisiirrzxkilcj1c2vylwrpci1wcmvmaxgvil1dfq==",
//    "callback": "eyjjywxsymfja1vybci6imh0dha6ly9kb21haw4uy29tl29zcy9jywxsymfjayisimnhbgxiywnrqm9kesi6intcimj1y2tldfwioir7ynvja2v0fsxcim9iamvjdfwioir7b2jqzwn0fsxcimv0ywdcijoke2v0ywd9lfwic2l6zvwioir7c2l6zx0sxcjtaw1lvhlwzvwioir7bwltzvr5cgv9lfwiaw1hz2vjbmzvxci6e1wiagvpz2h0xci6jhtpbwfnzuluzm8uagvpz2h0fsxcindpzhroxci6jhtpbwfnzuluzm8ud2lkdgh9lfwizm9ybwf0xci6jhtpbwfnzuluzm8uzm9ybwf0fx0sxcjjcmm2nfwioir7y3jjnjr9lfwiy29udgvude1knvwioir7y29udgvude1knx0sxcj2cgnjzfwioir7dnbjswr9lfwiy2xpzw50sxbcijoke2nsawvudelwfsxcinjlculkxci6jhtyzxfjzh0sxcjvcgvyyxrpb25cijoke29wzxjhdglvbn19iiwiy2fsbgjhy2tcb2r5vhlwzsi6imfwcgxpy2f0aw9ul2pzb24ifq==",
//    "signature": "uxl82wu5igcd7vczkx9gua5tujs=",
//    "host": "https://bucket-name.oss-cn-hangzhou.aliyuncs.com",
//    "expire": 1735689600,
//    "directory": "user-dir-prefix/"
//}

上传文件

curl --location "https://bucket-name.oss-cn-hangzhou.aliyuncs.com" \
--form 'key="user-dir-prefix/${filename}"' \
--form 'policy="eyjlehbpcmf0aw9uijoimjayns0wms0wmvqwmdowmdowmfoilcjjb25kaxrpb25zijpbwyjzdgfydhmtd2l0acisiirrzxkilcj1c2vylwrpci1wcmvmaxgvil1dfq=="' \
--form 'ossaccesskeyid="youraccesskeyid"' \
--form 'callback="eyjjywxsymfja1vybci6imh0dha6ly9kb21haw4uy29tl29zcy9jywxsymfjayisimnhbgxiywnrqm9kesi6intcimj1y2tldfwioir7ynvja2v0fsxcim9iamvjdfwioir7b2jqzwn0fsxcimv0ywdcijoke2v0ywd9lfwic2l6zvwioir7c2l6zx0sxcjtaw1lvhlwzvwioir7bwltzvr5cgv9lfwiaw1hz2vjbmzvxci6e1wiagvpz2h0xci6jhtpbwfnzuluzm8uagvpz2h0fsxcindpzhroxci6jhtpbwfnzuluzm8ud2lkdgh9lfwizm9ybwf0xci6jhtpbwfnzuluzm8uzm9ybwf0fx0sxcjjcmm2nfwioir7y3jjnjr9lfwiy29udgvude1knvwioir7y29udgvude1knx0sxcj2cgnjzfwioir7dnbjswr9lfwiy2xpzw50sxbcijoke2nsawvudelwfsxcinjlculkxci6jhtyzxfjzh0sxcjvcgvyyxrpb25cijoke29wzxjhdglvbn19iiwiy2fsbgjhy2tcb2r5vhlwzsi6imfwcgxpy2f0aw9ul2pzb24ifq=="' \
--form 'signature="uxl82wu5igcd7vczkx9gua5tujs="' \
--form 'file=@"~/downloads/image.jpg"'

回调验证

aliyunosscallback := appserver.newaliyunosscallback(request)
callbackbody,err := aliyunosscallback.verifysignature()
//{
//    "bucket": "bucket-name",
//    "object": "user-dir-prefix/image.jpg",
//    "etag": "a3ac1b2faadbd*****ee9f5ea57caacb",
//    "size": 2788,
//    "mimetype": "image/jpeg",
//    "imageinfo": {
//        "height": 197,
//        "width": 257,
//        "format": "jpg"
//    },
//    "crc64": 34616313***72852000,
//    "contentmd5": "o6wbl6rb0***7p9epxyqyw==",
//    "vpcid": null,
//    "clientip": "100.20.30.40",
//    "reqid": "674eb5aa2*****37341888f8",
//    "operation": "putobject"
//}
转载请告知
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图