阿里云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"
//}
转载请告知