🎨 Improve detection of duplicate insertion of assets https://github.com/siyuan-note/siyuan/issues/16220

Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2025-10-28 11:01:12 +08:00
parent 920f7e4623
commit 2567526672
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
3 changed files with 75 additions and 9 deletions

View file

@ -29,7 +29,7 @@ import (
"github.com/gin-gonic/gin"
"github.com/siyuan-note/filelock"
"github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/sql"
"github.com/siyuan-note/siyuan/kernel/cache"
"github.com/siyuan-note/siyuan/kernel/treenode"
"github.com/siyuan-note/siyuan/kernel/util"
)
@ -90,9 +90,9 @@ func InsertLocalAssets(id string, assetAbsPaths []string, isUpload bool) (succMa
return
}
if existAsset := sql.QueryAssetByHash(hash); nil != existAsset {
if existAssetPath := GetAssetPathByHash(hash); "" != existAssetPath {
// 已经存在同样数据的资源文件的话不重复保存
succMap[baseName] = existAsset.Path
succMap[baseName] = existAssetPath
} else {
fName = util.AssetName(fName, ast.NewNodeID())
writePath := filepath.Join(assetsDirPath, fName)
@ -105,7 +105,10 @@ func InsertLocalAssets(id string, assetAbsPaths []string, isUpload bool) (succMa
return
}
f.Close()
succMap[baseName] = "assets/" + fName
p := "assets/" + fName
succMap[baseName] = p
cache.SetAssetHash(hash, p)
}
}
IncSync()
@ -197,9 +200,9 @@ func Upload(c *gin.Context) {
break
}
if existAsset := sql.QueryAssetByHash(hash); nil != existAsset {
if existAssetPath := GetAssetPathByHash(hash); "" != existAssetPath {
// 已经存在同样数据的资源文件的话不重复保存
succMap[baseName] = existAsset.Path
succMap[baseName] = existAssetPath
} else {
if skipIfDuplicated {
// 复制 PDF 矩形注解时不再重复插入图片 No longer upload image repeatedly when copying PDF rectangle annotation https://github.com/siyuan-note/siyuan/issues/10666
@ -310,7 +313,9 @@ func Upload(c *gin.Context) {
os.RemoveAll(tmpDir2)
}
succMap[baseName] = strings.TrimPrefix(path.Join(relAssetsDirPath, fName), "/")
p := strings.TrimPrefix(path.Join(relAssetsDirPath, fName), "/")
succMap[baseName] = p
cache.SetAssetHash(hash, p)
}
}