From 43686be6e411c567c575308bc7f47ff4d22bcc6b Mon Sep 17 00:00:00 2001 From: Max Date: Sat, 31 May 2025 13:33:23 +0800 Subject: [PATCH] Enhance asset upload management in neo package - Added support for custom asset upload settings in the Upload struct, allowing for more flexible file handling. - Implemented logic in initUpload to register default or custom asset upload configurations based on user settings. - Improved error handling during asset registration to ensure robust functionality. --- neo/attachment/manager.go | 2 +- neo/load.go | 16 ++++++++++++++++ neo/types.go | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/neo/attachment/manager.go b/neo/attachment/manager.go index f2ee753a..c3c85aa1 100644 --- a/neo/attachment/manager.go +++ b/neo/attachment/manager.go @@ -41,7 +41,7 @@ func RegisterDefault(name string) (*Manager, error) { option := ManagerOption{ Driver: "local", - Options: map[string]interface{}{"path": filepath.Join(config.Conf.DataRoot, "attachments")}, + Options: map[string]interface{}{"path": filepath.Join(config.Conf.DataRoot, name)}, MaxSize: "50M", ChunkSize: "2M", AllowedTypes: []string{ diff --git a/neo/load.go b/neo/load.go index 959f96bd..b388b247 100644 --- a/neo/load.go +++ b/neo/load.go @@ -148,6 +148,22 @@ func initUpload() error { } } + // Use the chat upload setting for asset upload, if the asset upload setting is not set. (public assets) + if Neo.UploadSetting.Assets == nil { + _, err := attachment.RegisterDefault("assets") + if err != nil { + return err + } + } + + // Use custom asset upload setting + if Neo.UploadSetting.Assets != nil { + Neo.UploadSetting.Assets.ReplaceEnv(config.Conf.DataRoot) + _, err := attachment.Register("assets", Neo.UploadSetting.Assets.Driver, *Neo.UploadSetting.Assets) + if err != nil { + return err + } + } return nil } diff --git a/neo/types.go b/neo/types.go index ef711487..fa160e7d 100644 --- a/neo/types.go +++ b/neo/types.go @@ -82,6 +82,7 @@ type AuthFields struct { // =============================== type Upload struct { Chat *attachment.ManagerOption `json:"chat,omitempty" yaml:"chat,omitempty"` // Chat conversation upload setting, if not set use the local and root path is `/attachments`. + Assets *attachment.ManagerOption `json:"assets,omitempty" yaml:"assets,omitempty"` // Asset upload setting, if not set use the chat upload setting. Knowledge *attachment.ManagerOption `json:"knowledge,omitempty" yaml:"knowledge,omitempty"` // Knowledge base upload setting, if not set use the chat upload setting. }