https://github.com/alphasnow/aliyun-oss-appserver-go
Aliyun oss signature direct transmission. 阿里云服务端签名直传OSS扩展包.
https://github.com/alphasnow/aliyun-oss-appserver-go
aliyun aliyun-oss aliyun-sdk appserver golang oss
Last synced: 4 months ago
JSON representation
Aliyun oss signature direct transmission. 阿里云服务端签名直传OSS扩展包.
- Host: GitHub
- URL: https://github.com/alphasnow/aliyun-oss-appserver-go
- Owner: alphasnow
- License: mit
- Created: 2024-12-05T01:37:52.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-16T02:52:04.000Z (about 1 year ago)
- Last Synced: 2025-01-16T03:31:40.420Z (about 1 year ago)
- Topics: aliyun, aliyun-oss, aliyun-sdk, appserver, golang, oss
- Language: Go
- Homepage:
- Size: 46.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-CN.md
- License: LICENSE
Awesome Lists containing this project
README
[English](README.md) | 简体中文
# aliyun-oss-appserver-go
[](https://deepwiki.com/alphasnow/aliyun-oss-appserver-go)
通过 Web 端上传数据到 OSS. 服务端签名直传并设置上传回调.
## 安装
```shell
go get -u github.com/alphasnow/aliyun-oss-appserver-go
```
## 示例
### 生成授权
```go
token := appserver.NewToken(&appserver.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/"
//}
```
## 上传文件
```bash
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"'
```
## 回调验证
```go
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"
//}
```
## 参考
- 参考代码 [aliyun-oss-appserver-go-master.zip](https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20240710/zbucef/aliyun-oss-appserver-go-master.zip)
- 参考文档 [https://www.alibabacloud.com/help/en/oss/use-cases/go-1](https://www.alibabacloud.com/help/en/oss/use-cases/go-1)