mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-09-18 01:06:39 +08:00
chore: add sub dir support for OSS
This commit is contained in:
parent
a398e7a550
commit
4a56621ec3
@ -12,6 +12,7 @@ type MiniOssConfig struct {
|
|||||||
AccessKey string
|
AccessKey string
|
||||||
AccessSecret string
|
AccessSecret string
|
||||||
Bucket string
|
Bucket string
|
||||||
|
SubDir string
|
||||||
UseSSL bool
|
UseSSL bool
|
||||||
Domain string
|
Domain string
|
||||||
}
|
}
|
||||||
@ -21,6 +22,7 @@ type QiNiuOssConfig struct {
|
|||||||
AccessKey string
|
AccessKey string
|
||||||
AccessSecret string
|
AccessSecret string
|
||||||
Bucket string
|
Bucket string
|
||||||
|
SubDir string
|
||||||
Domain string
|
Domain string
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,6 +31,7 @@ type AliYunOssConfig struct {
|
|||||||
AccessKey string
|
AccessKey string
|
||||||
AccessSecret string
|
AccessSecret string
|
||||||
Bucket string
|
Bucket string
|
||||||
|
SubDir string
|
||||||
Domain string
|
Domain string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,10 @@ func NewAliYunOss(appConfig *types.AppConfig) (*AliYunOss, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if config.SubDir == "" {
|
||||||
|
config.SubDir = "gpt"
|
||||||
|
}
|
||||||
|
|
||||||
return &AliYunOss{
|
return &AliYunOss{
|
||||||
config: config,
|
config: config,
|
||||||
bucket: bucket,
|
bucket: bucket,
|
||||||
@ -54,7 +58,7 @@ func (s AliYunOss) PutFile(ctx *gin.Context, name string) (string, error) {
|
|||||||
defer src.Close()
|
defer src.Close()
|
||||||
|
|
||||||
fileExt := filepath.Ext(file.Filename)
|
fileExt := filepath.Ext(file.Filename)
|
||||||
objectKey := fmt.Sprintf("%d%s", time.Now().UnixMicro(), fileExt)
|
objectKey := fmt.Sprintf("%s/%d%s", s.config.SubDir, time.Now().UnixMicro(), fileExt)
|
||||||
// 上传文件
|
// 上传文件
|
||||||
err = s.bucket.PutObject(objectKey, src)
|
err = s.bucket.PutObject(objectKey, src)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -80,7 +84,7 @@ func (s AliYunOss) PutImg(imageURL string, useProxy bool) (string, error) {
|
|||||||
return "", fmt.Errorf("error with parse image URL: %v", err)
|
return "", fmt.Errorf("error with parse image URL: %v", err)
|
||||||
}
|
}
|
||||||
fileExt := filepath.Ext(parse.Path)
|
fileExt := filepath.Ext(parse.Path)
|
||||||
objectKey := fmt.Sprintf("%d%s", time.Now().UnixMicro(), fileExt)
|
objectKey := fmt.Sprintf("%s/%d%s", s.config.SubDir, time.Now().UnixMicro(), fileExt)
|
||||||
// 上传文件字节数据
|
// 上传文件字节数据
|
||||||
err = s.bucket.PutObject(objectKey, bytes.NewReader(imageData))
|
err = s.bucket.PutObject(objectKey, bytes.NewReader(imageData))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -91,7 +95,8 @@ func (s AliYunOss) PutImg(imageURL string, useProxy bool) (string, error) {
|
|||||||
|
|
||||||
func (s AliYunOss) Delete(fileURL string) error {
|
func (s AliYunOss) Delete(fileURL string) error {
|
||||||
objectName := filepath.Base(fileURL)
|
objectName := filepath.Base(fileURL)
|
||||||
return s.bucket.DeleteObject(objectName)
|
key := fmt.Sprintf("%s/%s", s.config.SubDir, objectName)
|
||||||
|
return s.bucket.DeleteObject(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ Uploader = AliYunOss{}
|
var _ Uploader = AliYunOss{}
|
||||||
|
@ -29,6 +29,9 @@ func NewMiniOss(appConfig *types.AppConfig) (MiniOss, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return MiniOss{}, err
|
return MiniOss{}, err
|
||||||
}
|
}
|
||||||
|
if config.SubDir == "" {
|
||||||
|
config.SubDir = "gpt"
|
||||||
|
}
|
||||||
return MiniOss{config: config, client: minioClient, proxyURL: appConfig.ProxyURL}, nil
|
return MiniOss{config: config, client: minioClient, proxyURL: appConfig.ProxyURL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +51,7 @@ func (s MiniOss) PutImg(imageURL string, useProxy bool) (string, error) {
|
|||||||
return "", fmt.Errorf("error with parse image URL: %v", err)
|
return "", fmt.Errorf("error with parse image URL: %v", err)
|
||||||
}
|
}
|
||||||
fileExt := filepath.Ext(parse.Path)
|
fileExt := filepath.Ext(parse.Path)
|
||||||
filename := fmt.Sprintf("%d%s", time.Now().UnixMicro(), fileExt)
|
filename := fmt.Sprintf("%s/%d%s", s.config.SubDir, time.Now().UnixMicro(), fileExt)
|
||||||
info, err := s.client.PutObject(
|
info, err := s.client.PutObject(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
s.config.Bucket,
|
s.config.Bucket,
|
||||||
@ -75,7 +78,7 @@ func (s MiniOss) PutFile(ctx *gin.Context, name string) (string, error) {
|
|||||||
defer fileReader.Close()
|
defer fileReader.Close()
|
||||||
|
|
||||||
fileExt := filepath.Ext(file.Filename)
|
fileExt := filepath.Ext(file.Filename)
|
||||||
filename := fmt.Sprintf("%d%s", time.Now().UnixMicro(), fileExt)
|
filename := fmt.Sprintf("%s/%d%s", s.config.SubDir, time.Now().UnixMicro(), fileExt)
|
||||||
info, err := s.client.PutObject(ctx, s.config.Bucket, filename, fileReader, file.Size, minio.PutObjectOptions{
|
info, err := s.client.PutObject(ctx, s.config.Bucket, filename, fileReader, file.Size, minio.PutObjectOptions{
|
||||||
ContentType: file.Header.Get("Content-Type"),
|
ContentType: file.Header.Get("Content-Type"),
|
||||||
})
|
})
|
||||||
@ -88,7 +91,8 @@ func (s MiniOss) PutFile(ctx *gin.Context, name string) (string, error) {
|
|||||||
|
|
||||||
func (s MiniOss) Delete(fileURL string) error {
|
func (s MiniOss) Delete(fileURL string) error {
|
||||||
objectName := filepath.Base(fileURL)
|
objectName := filepath.Base(fileURL)
|
||||||
return s.client.RemoveObject(context.Background(), s.config.Bucket, objectName, minio.RemoveObjectOptions{})
|
key := fmt.Sprintf("%s/%s", s.config.SubDir, objectName)
|
||||||
|
return s.client.RemoveObject(context.Background(), s.config.Bucket, key, minio.RemoveObjectOptions{})
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ Uploader = MiniOss{}
|
var _ Uploader = MiniOss{}
|
||||||
|
@ -21,7 +21,6 @@ type QinNiuOss struct {
|
|||||||
uploader *storage.FormUploader
|
uploader *storage.FormUploader
|
||||||
manager *storage.BucketManager
|
manager *storage.BucketManager
|
||||||
proxyURL string
|
proxyURL string
|
||||||
dir string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewQiNiuOss(appConfig *types.AppConfig) QinNiuOss {
|
func NewQiNiuOss(appConfig *types.AppConfig) QinNiuOss {
|
||||||
@ -38,6 +37,9 @@ func NewQiNiuOss(appConfig *types.AppConfig) QinNiuOss {
|
|||||||
putPolicy := storage.PutPolicy{
|
putPolicy := storage.PutPolicy{
|
||||||
Scope: config.Bucket,
|
Scope: config.Bucket,
|
||||||
}
|
}
|
||||||
|
if config.SubDir == "" {
|
||||||
|
config.SubDir = "gpt"
|
||||||
|
}
|
||||||
return QinNiuOss{
|
return QinNiuOss{
|
||||||
config: config,
|
config: config,
|
||||||
mac: mac,
|
mac: mac,
|
||||||
@ -45,7 +47,6 @@ func NewQiNiuOss(appConfig *types.AppConfig) QinNiuOss {
|
|||||||
uploader: formUploader,
|
uploader: formUploader,
|
||||||
manager: storage.NewBucketManager(mac, &storeConfig),
|
manager: storage.NewBucketManager(mac, &storeConfig),
|
||||||
proxyURL: appConfig.ProxyURL,
|
proxyURL: appConfig.ProxyURL,
|
||||||
dir: "chatgpt-plus",
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +64,7 @@ func (s QinNiuOss) PutFile(ctx *gin.Context, name string) (string, error) {
|
|||||||
defer src.Close()
|
defer src.Close()
|
||||||
|
|
||||||
fileExt := filepath.Ext(file.Filename)
|
fileExt := filepath.Ext(file.Filename)
|
||||||
key := fmt.Sprintf("%s/%d%s", s.dir, time.Now().UnixMicro(), fileExt)
|
key := fmt.Sprintf("%s/%d%s", s.config.SubDir, time.Now().UnixMicro(), fileExt)
|
||||||
// 上传文件
|
// 上传文件
|
||||||
ret := storage.PutRet{}
|
ret := storage.PutRet{}
|
||||||
extra := storage.PutExtra{}
|
extra := storage.PutExtra{}
|
||||||
@ -91,7 +92,7 @@ func (s QinNiuOss) PutImg(imageURL string, useProxy bool) (string, error) {
|
|||||||
return "", fmt.Errorf("error with parse image URL: %v", err)
|
return "", fmt.Errorf("error with parse image URL: %v", err)
|
||||||
}
|
}
|
||||||
fileExt := filepath.Ext(parse.Path)
|
fileExt := filepath.Ext(parse.Path)
|
||||||
key := fmt.Sprintf("%s/%d%s", s.dir, time.Now().UnixMicro(), fileExt)
|
key := fmt.Sprintf("%s/%d%s", s.config.SubDir, time.Now().UnixMicro(), fileExt)
|
||||||
ret := storage.PutRet{}
|
ret := storage.PutRet{}
|
||||||
extra := storage.PutExtra{}
|
extra := storage.PutExtra{}
|
||||||
// 上传文件字节数据
|
// 上传文件字节数据
|
||||||
@ -104,7 +105,7 @@ func (s QinNiuOss) PutImg(imageURL string, useProxy bool) (string, error) {
|
|||||||
|
|
||||||
func (s QinNiuOss) Delete(fileURL string) error {
|
func (s QinNiuOss) Delete(fileURL string) error {
|
||||||
objectName := filepath.Base(fileURL)
|
objectName := filepath.Base(fileURL)
|
||||||
key := fmt.Sprintf("%s/%s", s.dir, objectName)
|
key := fmt.Sprintf("%s/%s", s.config.SubDir, objectName)
|
||||||
return s.manager.Delete(s.config.Bucket, key)
|
return s.manager.Delete(s.config.Bucket, key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user