mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-29 14:46:38 +08:00
### 新增环境变量 STORAGE_ALIOSS_ENDPOINT:Endpoint(地域节点),比如`oss-cn-beijing.aliyuncs.com` STORAGE_ALIOSS_BUCKET_NAME:Bucket名称,比如`zerodeng-superai` STORAGE_ALIOSS_ACCESS_KEY_ID:阿里授权KEY,在RAM获取 STORAGE_ALIOSS_ACCESS_KEY_SECRET:阿里授权SECRET,在RAM获取
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package drives
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"github.com/aliyun/aliyun-oss-go-sdk/oss"
|
|
)
|
|
|
|
type AliOSSUpload struct {
|
|
Endpoint string
|
|
AccessKeyId string
|
|
AccessKeySecret string
|
|
BucketName string
|
|
}
|
|
|
|
func NewAliOSSUpload(endpoint, accessKeyId, accessKeySecret, bucketName string) *AliOSSUpload {
|
|
return &AliOSSUpload{
|
|
Endpoint: endpoint,
|
|
AccessKeyId: accessKeyId,
|
|
AccessKeySecret: accessKeySecret,
|
|
BucketName: bucketName,
|
|
}
|
|
}
|
|
|
|
func (a *AliOSSUpload) Name() string {
|
|
return "AliOSS"
|
|
}
|
|
|
|
func (a *AliOSSUpload) Upload(data []byte, fileName string) (string, error) {
|
|
// Create OSS Client
|
|
client, err := oss.New(a.Endpoint, a.AccessKeyId, a.AccessKeySecret)
|
|
if err != nil {
|
|
return "", fmt.Errorf("creating OSS client: %w", err)
|
|
}
|
|
|
|
// Create Bucket
|
|
bucket, err := client.Bucket(a.BucketName)
|
|
if err != nil {
|
|
return "", fmt.Errorf("getting bucket: %w", err)
|
|
}
|
|
|
|
// Upload File
|
|
reader := bytes.NewReader(data)
|
|
err = bucket.PutObject(fileName, reader)
|
|
if err != nil {
|
|
return "", fmt.Errorf("uploading file: %w", err)
|
|
}
|
|
|
|
// Get Object URL
|
|
objectURL, err := bucket.SignURL(fileName, oss.HTTPGet, 3600)
|
|
if err != nil {
|
|
return "", fmt.Errorf("signing object URL: %w", err)
|
|
}
|
|
|
|
return objectURL, nil
|
|
}
|