Browse Source

:art: Support opening assets through other apps on the Android https://github.com/siyuan-note/siyuan/issues/10657

Daniel 1 year ago
parent
commit
c5cc3ff779
2 changed files with 21 additions and 0 deletions
  1. 4 0
      kernel/mobile/kernel.go
  2. 17 0
      kernel/util/file.go

+ 4 - 0
kernel/mobile/kernel.go

@@ -99,6 +99,10 @@ func GetAssetAbsPath(asset string) (ret string) {
 	return
 	return
 }
 }
 
 
+func GetMimeTypeByExt(ext string) string {
+	return util.GetMimeTypeByExt(ext)
+}
+
 func SetTimezone(container, appDir, timezoneID string) {
 func SetTimezone(container, appDir, timezoneID string) {
 	if "ios" == container {
 	if "ios" == container {
 		os.Setenv("ZONEINFO", filepath.Join(appDir, "app", "zoneinfo.zip"))
 		os.Setenv("ZONEINFO", filepath.Join(appDir, "app", "zoneinfo.zip"))

+ 17 - 0
kernel/util/file.go

@@ -20,6 +20,7 @@ import (
 	"bytes"
 	"bytes"
 	"io"
 	"io"
 	"io/fs"
 	"io/fs"
+	"mime"
 	"os"
 	"os"
 	"path"
 	"path"
 	"path/filepath"
 	"path/filepath"
@@ -28,10 +29,26 @@ import (
 
 
 	"github.com/88250/gulu"
 	"github.com/88250/gulu"
 	"github.com/88250/lute/ast"
 	"github.com/88250/lute/ast"
+	"github.com/gabriel-vasile/mimetype"
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/logging"
 )
 )
 
 
+func GetMimeTypeByExt(filePath string) (ret string) {
+	ret = mime.TypeByExtension(filepath.Ext(filePath))
+	if "" == ret {
+		m, err := mimetype.DetectFile(filePath)
+		if nil != err {
+			logging.LogErrorf("detect mime type of [%s] failed: %s", filePath, err)
+			return
+		}
+		if nil != m {
+			ret = m.String()
+		}
+	}
+	return
+}
+
 func IsSymlinkPath(absPath string) bool {
 func IsSymlinkPath(absPath string) bool {
 	fi, err := os.Lstat(absPath)
 	fi, err := os.Lstat(absPath)
 	if nil != err {
 	if nil != err {