feat(blob path): diable {path} magic var for blob path

This commit is contained in:
Aaron Liu
2025-08-07 11:35:28 +08:00
parent b0375f5a24
commit 4c976b8627
2 changed files with 52 additions and 49 deletions

2
assets

Submodule assets updated: 09480ffa21...3a23464a0f

View File

@@ -770,7 +770,7 @@ func generateSavePath(policy *ent.StoragePolicy, req *fs.UploadRequest, user *en
currentTime := time.Now()
originName := req.Props.Uri.Name()
dynamicReplace := func(regPattern string, rule string) string {
dynamicReplace := func(regPattern string, rule string, pathAvailable bool) string {
re := regexp.MustCompile(regPattern)
return re.ReplaceAllStringFunc(rule, func(match string) string {
switch match {
@@ -811,7 +811,10 @@ func generateSavePath(policy *ent.StoragePolicy, req *fs.UploadRequest, user *en
case "{uuid}":
return uuid.Must(uuid.NewV4()).String()
case "{path}":
if pathAvailable {
return req.Props.Uri.Dir() + fs.Separator
}
return match
case "{originname}":
return originName
case "{ext}":
@@ -826,10 +829,10 @@ func generateSavePath(policy *ent.StoragePolicy, req *fs.UploadRequest, user *en
dirRule := policy.DirNameRule
dirRule = filepath.ToSlash(dirRule)
dirRule = dynamicReplace(`\{[^{}]+\}`, dirRule)
dirRule = dynamicReplace(`\{[^{}]+\}`, dirRule, true)
nameRule := policy.FileNameRule
nameRule = dynamicReplace(`\{[^{}]+\}`, nameRule)
nameRule = dynamicReplace(`\{[^{}]+\}`, nameRule, false)
return path.Join(path.Clean(dirRule), nameRule)
}