feat: gpt-4-gizmo-g-* model is supported

This commit is contained in:
RockYang
2024-01-15 15:03:05 +08:00
parent 59fa21779b
commit dc24a8c781
14 changed files with 86 additions and 31 deletions

View File

@@ -44,16 +44,16 @@ func NewAliYunOss(appConfig *types.AppConfig) (*AliYunOss, error) {
}
func (s AliYunOss) PutFile(ctx *gin.Context, name string) (string, error) {
func (s AliYunOss) PutFile(ctx *gin.Context, name string) (File, error) {
// 解析表单
file, err := ctx.FormFile(name)
if err != nil {
return "", err
return File{}, err
}
// 打开上传文件
src, err := file.Open()
if err != nil {
return "", err
return File{}, err
}
defer src.Close()
@@ -62,10 +62,14 @@ func (s AliYunOss) PutFile(ctx *gin.Context, name string) (string, error) {
// 上传文件
err = s.bucket.PutObject(objectKey, src)
if err != nil {
return "", err
return File{}, err
}
return fmt.Sprintf("%s/%s", s.config.Domain, objectKey), nil
return File{
URL: fmt.Sprintf("%s/%s", s.config.Domain, objectKey),
Ext: fileExt,
Size: file.Size,
}, nil
}
func (s AliYunOss) PutImg(imageURL string, useProxy bool) (string, error) {

View File

@@ -23,23 +23,28 @@ func NewLocalStorage(config *types.AppConfig) LocalStorage {
}
}
func (s LocalStorage) PutFile(ctx *gin.Context, name string) (string, error) {
func (s LocalStorage) PutFile(ctx *gin.Context, name string) (File, error) {
file, err := ctx.FormFile(name)
if err != nil {
return "", fmt.Errorf("error with get form: %v", err)
return File{}, fmt.Errorf("error with get form: %v", err)
}
filePath, err := utils.GenUploadPath(s.config.BasePath, file.Filename)
path, err := utils.GenUploadPath(s.config.BasePath, file.Filename)
if err != nil {
return "", fmt.Errorf("error with generate filename: %s", err.Error())
return File{}, fmt.Errorf("error with generate filename: %s", err.Error())
}
// 将文件保存到指定路径
err = ctx.SaveUploadedFile(file, filePath)
err = ctx.SaveUploadedFile(file, path)
if err != nil {
return "", fmt.Errorf("error with save upload file: %s", err.Error())
return File{}, fmt.Errorf("error with save upload file: %s", err.Error())
}
return utils.GenUploadUrl(s.config.BasePath, s.config.BaseURL, filePath), nil
ext := filepath.Ext(file.Filename)
return File{
URL: utils.GenUploadUrl(s.config.BasePath, s.config.BaseURL, path),
Ext: ext,
Size: file.Size,
}, nil
}
func (s LocalStorage) PutImg(imageURL string, useProxy bool) (string, error) {

View File

@@ -65,15 +65,15 @@ func (s MiniOss) PutImg(imageURL string, useProxy bool) (string, error) {
return fmt.Sprintf("%s/%s/%s", s.config.Domain, s.config.Bucket, info.Key), nil
}
func (s MiniOss) PutFile(ctx *gin.Context, name string) (string, error) {
func (s MiniOss) PutFile(ctx *gin.Context, name string) (File, error) {
file, err := ctx.FormFile(name)
if err != nil {
return "", fmt.Errorf("error with get form: %v", err)
return File{}, fmt.Errorf("error with get form: %v", err)
}
// Open the uploaded file
fileReader, err := file.Open()
if err != nil {
return "", fmt.Errorf("error opening file: %v", err)
return File{}, fmt.Errorf("error opening file: %v", err)
}
defer fileReader.Close()
@@ -83,10 +83,14 @@ func (s MiniOss) PutFile(ctx *gin.Context, name string) (string, error) {
ContentType: file.Header.Get("Content-Type"),
})
if err != nil {
return "", fmt.Errorf("error uploading to MinIO: %v", err)
return File{}, fmt.Errorf("error uploading to MinIO: %v", err)
}
return fmt.Sprintf("%s/%s/%s", s.config.Domain, s.config.Bucket, info.Key), nil
return File{
URL: fmt.Sprintf("%s/%s/%s", s.config.Domain, s.config.Bucket, info.Key),
Ext: fileExt,
Size: file.Size,
}, nil
}
func (s MiniOss) Delete(fileURL string) error {

View File

@@ -50,16 +50,16 @@ func NewQiNiuOss(appConfig *types.AppConfig) QinNiuOss {
}
}
func (s QinNiuOss) PutFile(ctx *gin.Context, name string) (string, error) {
func (s QinNiuOss) PutFile(ctx *gin.Context, name string) (File, error) {
// 解析表单
file, err := ctx.FormFile(name)
if err != nil {
return "", err
return File{}, err
}
// 打开上传文件
src, err := file.Open()
if err != nil {
return "", err
return File{}, err
}
defer src.Close()
@@ -70,10 +70,15 @@ func (s QinNiuOss) PutFile(ctx *gin.Context, name string) (string, error) {
extra := storage.PutExtra{}
err = s.uploader.Put(ctx, &ret, s.putPolicy.UploadToken(s.mac), key, src, file.Size, &extra)
if err != nil {
return "", err
return File{}, err
}
return fmt.Sprintf("%s/%s", s.config.Domain, ret.Key), nil
return File{
URL: fmt.Sprintf("%s/%s", s.config.Domain, ret.Key),
Ext: fileExt,
Size: file.Size,
}, nil
}
func (s QinNiuOss) PutImg(imageURL string, useProxy bool) (string, error) {

View File

@@ -2,8 +2,13 @@ package oss
import "github.com/gin-gonic/gin"
type File struct {
Size int64
URL string
Ext string
}
type Uploader interface {
PutFile(ctx *gin.Context, name string) (string, error)
PutFile(ctx *gin.Context, name string) (File, error)
PutImg(imageURL string, useProxy bool) (string, error)
Delete(fileURL string) error
}