From 1069d245afbe71c2482e705e4ef2b9c3e298bdf1 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 24 Feb 2023 11:12:41 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E6=B5=8F=E8=A7=88?= =?UTF-8?q?=E5=99=A8=E5=89=AA=E8=97=8F=E6=89=A9=E5=B1=95=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=9B=BE=E7=89=87=E5=90=8E=E7=BC=80=20Fix=20?= =?UTF-8?q?https://github.com/siyuan-note/siyuan/issues/7467?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/extension.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/kernel/api/extension.go b/kernel/api/extension.go index c7d0a4810..7b6124b99 100644 --- a/kernel/api/extension.go +++ b/kernel/api/extension.go @@ -30,6 +30,7 @@ import ( "github.com/88250/lute" "github.com/88250/lute/ast" "github.com/88250/lute/parse" + "github.com/gabriel-vasile/mimetype" "github.com/gin-gonic/gin" "github.com/siyuan-note/filelock" "github.com/siyuan-note/logging" @@ -80,7 +81,7 @@ func extensionCopy(c *gin.Context) { continue } fName := path.Base(u.Path) - fName = util.FilterUploadFileName(fName) + f, err := file[0].Open() if nil != err { ret.Code = -1 @@ -96,10 +97,19 @@ func extensionCopy(c *gin.Context) { } ext := path.Ext(fName) - fName = fName[0 : len(fName)-len(ext)] + originalExt := ext + if "" == ext || strings.Contains(ext, "!") { + // 改进浏览器剪藏扩展转换本地图片后缀 https://github.com/siyuan-note/siyuan/issues/7467 + if mtype := mimetype.Detect(data); nil != mtype { + ext = mtype.Extension() + } + } if "" == ext && bytes.HasPrefix(data, []byte("")) { ext = ".svg" } + + fName = fName[0 : len(fName)-len(originalExt)] + fName = util.FilterUploadFileName(fName) fName = fName + "-" + ast.NewNodeID() + ext writePath := filepath.Join(assets, fName) if err = filelock.WriteFile(writePath, data); nil != err {