mirror of
				https://github.com/yangjian102621/geekai.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	feat: added delete file function
This commit is contained in:
		@@ -33,8 +33,6 @@ func NewServicePool(db *gorm.DB, redisCli *redis.Client, manager *oss.UploaderMa
 | 
			
		||||
		if config.Enabled == false {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		// rewrite api key
 | 
			
		||||
		config.ApiURL = "https://api.chat-plus.net"
 | 
			
		||||
		client := plus.NewClient(config)
 | 
			
		||||
		name := fmt.Sprintf("mj-service-plus-%d", k)
 | 
			
		||||
		servicePlus := plus.NewService(name, taskQueue, notifyQueue, 10, 600, db, client)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/url"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
 | 
			
		||||
@@ -67,10 +68,11 @@ func (s AliYunOss) PutFile(ctx *gin.Context, name string) (File, error) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return File{
 | 
			
		||||
		Name: file.Filename,
 | 
			
		||||
		URL:  fmt.Sprintf("%s/%s", s.config.Domain, objectKey),
 | 
			
		||||
		Ext:  fileExt,
 | 
			
		||||
		Size: file.Size,
 | 
			
		||||
		Name:   file.Filename,
 | 
			
		||||
		ObjKey: objectKey,
 | 
			
		||||
		URL:    fmt.Sprintf("%s/%s", s.config.Domain, objectKey),
 | 
			
		||||
		Ext:    fileExt,
 | 
			
		||||
		Size:   file.Size,
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -100,9 +102,14 @@ func (s AliYunOss) PutImg(imageURL string, useProxy bool) (string, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s AliYunOss) Delete(fileURL string) error {
 | 
			
		||||
	objectName := filepath.Base(fileURL)
 | 
			
		||||
	key := fmt.Sprintf("%s/%s", s.config.SubDir, objectName)
 | 
			
		||||
	return s.bucket.DeleteObject(key)
 | 
			
		||||
	var objectKey string
 | 
			
		||||
	if strings.HasPrefix(fileURL, "http") {
 | 
			
		||||
		filename := filepath.Base(fileURL)
 | 
			
		||||
		objectKey = fmt.Sprintf("%s/%s", s.config.SubDir, filename)
 | 
			
		||||
	} else {
 | 
			
		||||
		objectKey = fileURL
 | 
			
		||||
	}
 | 
			
		||||
	return s.bucket.DeleteObject(objectKey)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ Uploader = AliYunOss{}
 | 
			
		||||
 
 | 
			
		||||
@@ -42,10 +42,11 @@ func (s LocalStorage) PutFile(ctx *gin.Context, name string) (File, error) {
 | 
			
		||||
 | 
			
		||||
	ext := filepath.Ext(file.Filename)
 | 
			
		||||
	return File{
 | 
			
		||||
		Name: file.Filename,
 | 
			
		||||
		URL:  utils.GenUploadUrl(s.config.BasePath, s.config.BaseURL, path),
 | 
			
		||||
		Ext:  ext,
 | 
			
		||||
		Size: file.Size,
 | 
			
		||||
		Name:   file.Filename,
 | 
			
		||||
		ObjKey: path,
 | 
			
		||||
		URL:    utils.GenUploadUrl(s.config.BasePath, s.config.BaseURL, path),
 | 
			
		||||
		Ext:    ext,
 | 
			
		||||
		Size:   file.Size,
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -73,6 +74,9 @@ func (s LocalStorage) PutImg(imageURL string, useProxy bool) (string, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s LocalStorage) Delete(fileURL string) error {
 | 
			
		||||
	if _, err := os.Stat(fileURL); err == nil {
 | 
			
		||||
		return os.Remove(fileURL)
 | 
			
		||||
	}
 | 
			
		||||
	filePath := strings.Replace(fileURL, s.config.BaseURL, s.config.BasePath, 1)
 | 
			
		||||
	return os.Remove(filePath)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -88,17 +88,23 @@ func (s MiniOss) PutFile(ctx *gin.Context, name string) (File, error) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return File{
 | 
			
		||||
		Name: file.Filename,
 | 
			
		||||
		URL:  fmt.Sprintf("%s/%s/%s", s.config.Domain, s.config.Bucket, info.Key),
 | 
			
		||||
		Ext:  fileExt,
 | 
			
		||||
		Size: file.Size,
 | 
			
		||||
		Name:   file.Filename,
 | 
			
		||||
		ObjKey: info.Key,
 | 
			
		||||
		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 {
 | 
			
		||||
	objectName := filepath.Base(fileURL)
 | 
			
		||||
	key := fmt.Sprintf("%s/%s", s.config.SubDir, objectName)
 | 
			
		||||
	return s.client.RemoveObject(context.Background(), s.config.Bucket, key, minio.RemoveObjectOptions{})
 | 
			
		||||
	var objectKey string
 | 
			
		||||
	if strings.HasPrefix(fileURL, "http") {
 | 
			
		||||
		filename := filepath.Base(fileURL)
 | 
			
		||||
		objectKey = fmt.Sprintf("%s/%s", s.config.SubDir, filename)
 | 
			
		||||
	} else {
 | 
			
		||||
		objectKey = fileURL
 | 
			
		||||
	}
 | 
			
		||||
	return s.client.RemoveObject(context.Background(), s.config.Bucket, objectKey, minio.RemoveObjectOptions{})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ Uploader = MiniOss{}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/url"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
@@ -75,10 +76,11 @@ func (s QinNiuOss) PutFile(ctx *gin.Context, name string) (File, error) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return File{
 | 
			
		||||
		Name: file.Filename,
 | 
			
		||||
		URL:  fmt.Sprintf("%s/%s", s.config.Domain, ret.Key),
 | 
			
		||||
		Ext:  fileExt,
 | 
			
		||||
		Size: file.Size,
 | 
			
		||||
		Name:   file.Filename,
 | 
			
		||||
		ObjKey: key,
 | 
			
		||||
		URL:    fmt.Sprintf("%s/%s", s.config.Domain, ret.Key),
 | 
			
		||||
		Ext:    fileExt,
 | 
			
		||||
		Size:   file.Size,
 | 
			
		||||
	}, nil
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -111,9 +113,15 @@ func (s QinNiuOss) PutImg(imageURL string, useProxy bool) (string, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s QinNiuOss) Delete(fileURL string) error {
 | 
			
		||||
	objectName := filepath.Base(fileURL)
 | 
			
		||||
	key := fmt.Sprintf("%s/%s", s.config.SubDir, objectName)
 | 
			
		||||
	return s.manager.Delete(s.config.Bucket, key)
 | 
			
		||||
	var objectKey string
 | 
			
		||||
	if strings.HasPrefix(fileURL, "http") {
 | 
			
		||||
		filename := filepath.Base(fileURL)
 | 
			
		||||
		objectKey = fmt.Sprintf("%s/%s", s.config.SubDir, filename)
 | 
			
		||||
	} else {
 | 
			
		||||
		objectKey = fileURL
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return s.manager.Delete(s.config.Bucket, objectKey)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ Uploader = QinNiuOss{}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,11 @@ const QiNiu = "QINIU"
 | 
			
		||||
const AliYun = "ALIYUN"
 | 
			
		||||
 | 
			
		||||
type File struct {
 | 
			
		||||
	Name string `json:"name"`
 | 
			
		||||
	Size int64  `json:"size"`
 | 
			
		||||
	URL  string `json:"url"`
 | 
			
		||||
	Ext  string `json:"ext"`
 | 
			
		||||
	Name   string `json:"name"`
 | 
			
		||||
	ObjKey string `json:"obj_key"`
 | 
			
		||||
	Size   int64  `json:"size"`
 | 
			
		||||
	URL    string `json:"url"`
 | 
			
		||||
	Ext    string `json:"ext"`
 | 
			
		||||
}
 | 
			
		||||
type Uploader interface {
 | 
			
		||||
	PutFile(ctx *gin.Context, name string) (File, error)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user