Files
storagex/example/main.go
T
2026-03-09 11:44:51 +08:00

62 lines
1.5 KiB
Go

package main
import (
"context"
"fmt"
"log"
"strings"
"code.yun.ink/pkg/storagex"
"code.yun.ink/pkg/storagex/aliyun"
"code.yun.ink/pkg/storagex/aws"
)
func init() {
// 在应用启动时注册所有支持的服务商
storagex.Register("aliyun", &aliyun.AliyunFactory{})
storagex.Register("aws", &aws.S3Factory{})
// storagex.Register("tencent", &tencent.COSFactory{})
}
func main() {
// 场景 1: 使用阿里云账号 A 上传
cfgAli := storagex.Config{
Provider: "aliyun",
AccountID: "user_123", // 指定账号
Options: map[string]string{
"access_key": "LTAIxxxx",
"secret_key": "secretxxxx",
"bucket": "my-app-assets",
"endpoint": "oss-cn-hangzhou.aliyuncs.com",
},
}
// 获取上传通道 (自动处理单例复用)
uploader, err := storagex.GetUploader("aliyun", "user_123", cfgAli)
if err != nil {
log.Fatal(err)
}
// 执行上传
result, err := uploader.PutObject(context.Background(), "images/test.png", strings.NewReader("file content"))
if err != nil {
log.Fatal(err)
}
fmt.Printf("上传成功: %s\n", result.URL)
// 场景 2: 使用 AWS 账号 B 上传
// cfgAws := storagex.Config{
// Provider: "aws",
// AccountID: "finance_dept",
// Options: map[string]string{
// "region": "ap-northeast-1",
// "bucket": "finance-bucket",
// // AK/SK...
// },
// }
// 注意:这里会创建一个新的 S3 客户端,与阿里云互不干扰
// awsUploader, _ := storagex.GetUploader("aws", "finance_dept", cfgAws)
// awsUploader.Upload(...)
}