From 513aadb9d57a2245a01beb38e5e34da7a380665c Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 20 Jul 2025 10:05:13 +0800 Subject: [PATCH] :art: Improve converting network assets to local assets https://github.com/siyuan-note/siyuan/issues/15320 --- kernel/model/assets.go | 2 +- kernel/util/file.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/kernel/model/assets.go b/kernel/model/assets.go index 6dd1eb21a..91acf052f 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -285,7 +285,7 @@ func NetAssets2LocalAssets(rootID string, onlyImg bool, originalURL string) (err name, _ = url.PathUnescape(name) name = util.FilterUploadFileName(name) ext := util.Ext(name) - if "" == ext { + if !util.IsCommonExt(ext) { if mtype := mimetype.Detect(data); nil != mtype { ext = mtype.Extension() name += ext diff --git a/kernel/util/file.go b/kernel/util/file.go index 832d1e225..169d003e4 100644 --- a/kernel/util/file.go +++ b/kernel/util/file.go @@ -148,6 +148,22 @@ func RemoveID(name string) string { return name + ext } +var commonSuffixes = []string{ + ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".svg", ".webp", ".tiff", + ".txt", ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".md", ".rtf", + ".zip", ".rar", ".7z", ".tar", ".gz", ".bz2", + ".mp3", ".wav", ".aac", ".flac", ".ogg", ".m4a", + ".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", + ".exe", ".bat", ".sh", ".app", + ".js", ".ts", ".html", ".css", ".go", ".py", ".java", ".c", ".cpp", ".json", ".xml", ".yaml", ".toml", + ".sql", ".db", ".sqlite", ".csv", + ".iso", ".dmg", ".apk", ".bin", +} + +func IsCommonExt(ext string) bool { + return strings.HasPrefix(ext, ".") && gulu.Str.Contains(strings.ToLower(ext), commonSuffixes) +} + func Ext(name string) (ret string) { ret = path.Ext(name) if "." == ret {