diff --git a/api/service/mj/plus/service.go b/api/service/mj/plus/service.go index f653e851..1f9acbd9 100644 --- a/api/service/mj/plus/service.go +++ b/api/service/mj/plus/service.go @@ -180,7 +180,6 @@ func (s *Service) Notify(job model.MidJourneyJob) error { job.OrgURL = task.ImageUrl } } - job.UseProxy = true job.MessageId = task.Id tx := s.db.Updates(&job) if tx.Error != nil { diff --git a/api/service/mj/pool.go b/api/service/mj/pool.go index 779585fc..4c676589 100644 --- a/api/service/mj/pool.go +++ b/api/service/mj/pool.go @@ -124,14 +124,12 @@ func (p *ServicePool) DownloadImages() { logger.Infof("try to download image: %s", v.OrgURL) var imgURL string var err error - if v.UseProxy { - if servicePlus := p.getServicePlus(v.ChannelId); servicePlus != nil { - task, _ := servicePlus.Client.QueryTask(v.TaskId) - if len(task.Buttons) > 0 { - v.Hash = plus.GetImageHash(task.Buttons[0].CustomId) - } - imgURL, err = p.uploaderManager.GetUploadHandler().PutImg(v.OrgURL, false) + if servicePlus := p.getServicePlus(v.ChannelId); servicePlus != nil { + task, _ := servicePlus.Client.QueryTask(v.TaskId) + if len(task.Buttons) > 0 { + v.Hash = plus.GetImageHash(task.Buttons[0].CustomId) } + imgURL, err = p.uploaderManager.GetUploadHandler().PutImg(v.OrgURL, false) } else { imgURL, err = p.uploaderManager.GetUploadHandler().PutImg(v.OrgURL, true) } diff --git a/api/service/oss/aliyun_oss.go b/api/service/oss/aliyun_oss.go index c9f4ea21..5ae1063b 100644 --- a/api/service/oss/aliyun_oss.go +++ b/api/service/oss/aliyun_oss.go @@ -5,11 +5,12 @@ import ( "chatplus/core/types" "chatplus/utils" "fmt" - "github.com/aliyun/aliyun-oss-go-sdk/oss" - "github.com/gin-gonic/gin" "net/url" "path/filepath" "time" + + "github.com/aliyun/aliyun-oss-go-sdk/oss" + "github.com/gin-gonic/gin" ) type AliYunOss struct { @@ -88,7 +89,7 @@ func (s AliYunOss) PutImg(imageURL string, useProxy bool) (string, error) { if err != nil { return "", fmt.Errorf("error with parse image URL: %v", err) } - fileExt := filepath.Ext(parse.Path) + fileExt := utils.GetImgExt(parse.Path) objectKey := fmt.Sprintf("%s/%d%s", s.config.SubDir, time.Now().UnixMicro(), fileExt) // 上传文件字节数据 err = s.bucket.PutObject(objectKey, bytes.NewReader(imageData)) diff --git a/api/service/oss/localstorage.go b/api/service/oss/localstorage.go index 0ce5be2d..5e98927a 100644 --- a/api/service/oss/localstorage.go +++ b/api/service/oss/localstorage.go @@ -4,11 +4,12 @@ import ( "chatplus/core/types" "chatplus/utils" "fmt" - "github.com/gin-gonic/gin" "net/url" "os" "path/filepath" "strings" + + "github.com/gin-gonic/gin" ) type LocalStorage struct { @@ -29,7 +30,7 @@ func (s LocalStorage) PutFile(ctx *gin.Context, name string) (File, error) { return File{}, fmt.Errorf("error with get form: %v", err) } - path, err := utils.GenUploadPath(s.config.BasePath, file.Filename) + path, err := utils.GenUploadPath(s.config.BasePath, file.Filename, false) if err != nil { return File{}, fmt.Errorf("error with generate filename: %s", err.Error()) } @@ -54,7 +55,7 @@ func (s LocalStorage) PutImg(imageURL string, useProxy bool) (string, error) { return "", fmt.Errorf("error with parse image URL: %v", err) } filename := filepath.Base(parse.Path) - filePath, err := utils.GenUploadPath(s.config.BasePath, filename) + filePath, err := utils.GenUploadPath(s.config.BasePath, filename, true) if err != nil { return "", fmt.Errorf("error with generate image dir: %v", err) } diff --git a/api/service/oss/minio_oss.go b/api/service/oss/minio_oss.go index 94b03a24..fa6fe68e 100644 --- a/api/service/oss/minio_oss.go +++ b/api/service/oss/minio_oss.go @@ -5,13 +5,14 @@ import ( "chatplus/utils" "context" "fmt" - "github.com/gin-gonic/gin" - "github.com/minio/minio-go/v7" - "github.com/minio/minio-go/v7/pkg/credentials" "net/url" "path/filepath" "strings" "time" + + "github.com/gin-gonic/gin" + "github.com/minio/minio-go/v7" + "github.com/minio/minio-go/v7/pkg/credentials" ) type MiniOss struct { @@ -77,7 +78,7 @@ func (s MiniOss) PutFile(ctx *gin.Context, name string) (File, error) { } defer fileReader.Close() - fileExt := filepath.Ext(file.Filename) + fileExt := utils.GetImgExt(file.Filename) 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{ ContentType: file.Header.Get("Content-Type"), diff --git a/api/service/oss/qiniu_oss.go b/api/service/oss/qiniu_oss.go index 3b989308..e2df7ee6 100644 --- a/api/service/oss/qiniu_oss.go +++ b/api/service/oss/qiniu_oss.go @@ -6,12 +6,13 @@ import ( "chatplus/utils" "context" "fmt" - "github.com/gin-gonic/gin" - "github.com/qiniu/go-sdk/v7/auth/qbox" - "github.com/qiniu/go-sdk/v7/storage" "net/url" "path/filepath" "time" + + "github.com/gin-gonic/gin" + "github.com/qiniu/go-sdk/v7/auth/qbox" + "github.com/qiniu/go-sdk/v7/storage" ) type QinNiuOss struct { @@ -97,7 +98,7 @@ func (s QinNiuOss) PutImg(imageURL string, useProxy bool) (string, error) { if err != nil { return "", fmt.Errorf("error with parse image URL: %v", err) } - fileExt := filepath.Ext(parse.Path) + fileExt := utils.GetImgExt(parse.Path) key := fmt.Sprintf("%s/%d%s", s.config.SubDir, time.Now().UnixMicro(), fileExt) ret := storage.PutRet{} extra := storage.PutExtra{} diff --git a/api/utils/upload.go b/api/utils/upload.go index d982c1d8..1bab2aca 100644 --- a/api/utils/upload.go +++ b/api/utils/upload.go @@ -12,7 +12,7 @@ import ( ) // GenUploadPath 生成上传文件路径 -func GenUploadPath(basePath, filename string) (string, error) { +func GenUploadPath(basePath, filename string, isImg bool) (string, error) { now := time.Now() dir := fmt.Sprintf("%s/%d/%d", basePath, now.Year(), now.Month()) _, err := os.Stat(dir) @@ -22,7 +22,12 @@ func GenUploadPath(basePath, filename string) (string, error) { return "", fmt.Errorf("error with create upload dir:%v", err) } } - fileExt := filepath.Ext(filename) + var fileExt string + if isImg { + fileExt = GetImgExt(filename) + } else { + fileExt = filepath.Ext(filename) + } return fmt.Sprintf("%s/%d%s", dir, now.UnixMicro(), fileExt), nil } @@ -66,3 +71,11 @@ func DownloadFile(fileURL string, filepath string, proxy string) error { return nil } + +func GetImgExt(filename string) string { + ext := filepath.Ext(filename) + if ext == "" { + return ".png" + } + return ext +}