diff --git a/kernel/server/serve.go b/kernel/server/serve.go index 03b83d61f..5b9ee6df9 100644 --- a/kernel/server/serve.go +++ b/kernel/server/serve.go @@ -75,6 +75,7 @@ func Serve(fastMode bool) { servePlugins(ginServer) serveEmojis(ginServer) serveTemplates(ginServer) + servePublic(ginServer) serveRepoDiff(ginServer) api.ServeAPI(ginServer) @@ -188,6 +189,11 @@ func serveTemplates(ginServer *gin.Engine) { ginServer.Static("/templates/", filepath.Join(util.DataDir, "templates")) } +func servePublic(ginServer *gin.Engine) { + // Support directly access `data/public/*` contents via URL link https://github.com/siyuan-note/siyuan/issues/8593 + ginServer.Static("/public/", filepath.Join(util.DataDir, "public")) +} + func serveAppearance(ginServer *gin.Engine) { ginServer.StaticFile("favicon.ico", filepath.Join(util.WorkingDir, "stage", "icon.png")) ginServer.StaticFile("manifest.json", filepath.Join(util.WorkingDir, "stage", "manifest.webmanifest")) diff --git a/kernel/util/working.go b/kernel/util/working.go index 2a8609d7a..2e878c56e 100644 --- a/kernel/util/working.go +++ b/kernel/util/working.go @@ -355,6 +355,12 @@ func initPathDir() { if err := os.MkdirAll(emojis, 0755); nil != err && !os.IsExist(err) { logging.LogFatalf(logging.ExitCodeInitWorkspaceErr, "create data emojis folder [%s] failed: %s", widgets, err) } + + // Support directly access `data/public/*` contents via URL link https://github.com/siyuan-note/siyuan/issues/8593 + public := filepath.Join(DataDir, "public") + if err := os.MkdirAll(public, 0755); nil != err && !os.IsExist(err) { + logging.LogFatalf(logging.ExitCodeInitWorkspaceErr, "create data public folder [%s] failed: %s", widgets, err) + } } func initMime() {