你可以看看阿里的官方文档,你在生成签名时把参数加上就行
SDK处理方法,以go版本为例:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func HandleError(err error) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 创建OSSClient实例。
// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret")
if err != nil {
HandleError(err)
}
// 指定图片所在Bucket的名称,例如examplebucket。
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// 指定图片名称。如果图片不在Bucket根目录,需携带文件完整路径,例如exampledir/example.jpg。
ossImageName := "exampledir/example.jpg"
// 生成带签名的URL,并指定过期时间为600s。
signedURL, err := bucket.SignURL(ossImageName, oss.HTTPGet, 600, oss.Process("image/format,png"))
if err != nil {
HandleError(err)
} else {
fmt.Println(signedURL)
}
}
其中,yourAccessKeyId,yourAccessKeySecret的来源参考该文,阿里云OSS上传报错: You have no right to
access this object because of bucket
acl。创建完用户需要创建AccessKeyId,接着就可以创建yourAccessKeyId和AccessKeySecret。
最后会生成完整的图片链接,注意,如果发现链接中多出了bucket,需要排查yourEndpoint是否已经加上了bucket,需要删除掉。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240929/86ee4290e2deb891d767df41e4e2a146.png)
"https://help.aliyun.com/zh/oss/user-guide/img-implementation-..." (https://link.segmentfault.com/?enc=00WB41RrCSx7VvQy2YsocA%3D%3D.Vz0URmMwg4gBGxhAUzfopwROW%2FNdjiB6waUfdViZnVsnoRO9U8u1Vr5wfY4BNjTs9qCZKy6iPo2u5yFKC9by3sN2EuJdEoC1hfDnJPY81b2fMkVUobApe0%2BkgQuBrm%2Fg)