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. }