From f971ec5d3410fbbdd73896a088a91e6469b846df Mon Sep 17 00:00:00 2001 From: RockYang Date: Thu, 5 Oct 2023 18:09:42 +0800 Subject: [PATCH] fix: fixed bug for generating the upload file path --- api/service/oss/aliyun_oss.go | 7 ++++++- api/service/oss/localstorage.go | 7 ++++++- api/service/oss/minio_oss.go | 7 ++++++- api/service/oss/qiniu_oss.go | 7 ++++++- api/test/test.go | 10 +++++++--- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/api/service/oss/aliyun_oss.go b/api/service/oss/aliyun_oss.go index d24d3a65..d90daef0 100644 --- a/api/service/oss/aliyun_oss.go +++ b/api/service/oss/aliyun_oss.go @@ -7,6 +7,7 @@ import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/gin-gonic/gin" + "net/url" "path/filepath" "time" ) @@ -74,7 +75,11 @@ func (s AliYunOss) PutImg(imageURL string, useProxy bool) (string, error) { if err != nil { return "", fmt.Errorf("error with download image: %v", err) } - fileExt := filepath.Ext(filepath.Base(imageURL)) + parse, err := url.Parse(imageURL) + if err != nil { + return "", fmt.Errorf("error with parse image URL: %v", err) + } + fileExt := filepath.Ext(parse.Path) objectKey := fmt.Sprintf("%d%s", 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 a73aa2f7..fac4fc11 100644 --- a/api/service/oss/localstorage.go +++ b/api/service/oss/localstorage.go @@ -5,6 +5,7 @@ import ( "chatplus/utils" "fmt" "github.com/gin-gonic/gin" + "net/url" "os" "path/filepath" "strings" @@ -42,7 +43,11 @@ func (s LocalStorage) PutFile(ctx *gin.Context, name string) (string, error) { } func (s LocalStorage) PutImg(imageURL string, useProxy bool) (string, error) { - filename := filepath.Base(imageURL) + parse, err := url.Parse(imageURL) + if err != nil { + return "", fmt.Errorf("error with parse image URL: %v", err) + } + filename := filepath.Base(parse.Path) filePath, err := utils.GenUploadPath(s.config.BasePath, filename) 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 186340cf..edeaf4a7 100644 --- a/api/service/oss/minio_oss.go +++ b/api/service/oss/minio_oss.go @@ -8,6 +8,7 @@ import ( "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" @@ -42,7 +43,11 @@ func (s MiniOss) PutImg(imageURL string, useProxy bool) (string, error) { if err != nil { return "", fmt.Errorf("error with download image: %v", err) } - fileExt := filepath.Ext(filepath.Base(imageURL)) + parse, err := url.Parse(imageURL) + if err != nil { + return "", fmt.Errorf("error with parse image URL: %v", err) + } + fileExt := filepath.Ext(parse.Path) filename := fmt.Sprintf("%d%s", time.Now().UnixMicro(), fileExt) info, err := s.client.PutObject( context.Background(), diff --git a/api/service/oss/qiniu_oss.go b/api/service/oss/qiniu_oss.go index 266f1f52..0c1a1fc1 100644 --- a/api/service/oss/qiniu_oss.go +++ b/api/service/oss/qiniu_oss.go @@ -9,6 +9,7 @@ import ( "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" ) @@ -83,7 +84,11 @@ func (s QinNiuOss) PutImg(imageURL string, useProxy bool) (string, error) { if err != nil { return "", fmt.Errorf("error with download image: %v", err) } - fileExt := filepath.Ext(filepath.Base(imageURL)) + parse, err := url.Parse(imageURL) + if err != nil { + return "", fmt.Errorf("error with parse image URL: %v", err) + } + fileExt := filepath.Ext(parse.Path) key := fmt.Sprintf("%s/%d%s", s.dir, time.Now().UnixMicro(), fileExt) ret := storage.PutRet{} extra := storage.PutExtra{} diff --git a/api/test/test.go b/api/test/test.go index 87b913f3..b327c799 100644 --- a/api/test/test.go +++ b/api/test/test.go @@ -3,11 +3,15 @@ package main import ( "fmt" "net/url" + "path" ) func main() { - parse, _ := url.Parse("http://localhost:5678/static") + imgURL := "https://www.baidu.com/static/upload/2023/10/1696497571220711277.png?ex=6530f4a2&is=651e7fa28hmFd709d069ca05d7855ebdae42e5aa436883a36f9310d546" + parse, err := url.Parse(imgURL) + if err != nil { + panic(err) + } - imgURLPrefix := fmt.Sprintf("%s://%s", parse.Scheme, parse.Host) - fmt.Println(imgURLPrefix) + fmt.Println(path.Ext(parse.Path)) }