From 7ee990f7a224ecec47bc2ab972458fab1795b3cc Mon Sep 17 00:00:00 2001 From: cirry <812852553@qq.com> Date: Wed, 8 Jul 2026 17:07:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=BE=E7=A4=BA=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=92=8C=E8=A7=86=E9=A2=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/Cargo.lock | 7 + src-tauri/Cargo.toml | 2 +- src-tauri/src/lib.rs | 8 +- src-tauri/tauri.conf.json | 6 +- src/App.vue | 214 +++++++++++++++++++++++++++++- src/components/MarkdownEditor.vue | 151 ++++++++++++++++++++- 6 files changed, 375 insertions(+), 13 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 8bdde8d..c298629 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1465,6 +1465,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + [[package]] name = "httparse" version = "1.10.1" @@ -3291,6 +3297,7 @@ dependencies = [ "gtk", "heck 0.5.0", "http", + "http-range", "jni", "libc", "log", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index d29482b..896f77a 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -18,7 +18,7 @@ crate-type = ["staticlib", "cdylib", "rlib"] tauri-build = { version = "2", features = [] } [dependencies] -tauri = { version = "2", features = [] } +tauri = { version = "2", features = ["protocol-asset"] } tauri-plugin-dialog = "2" tauri-plugin-opener = "2" serde = { version = "1", features = ["derive"] } diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 165eb62..288dd21 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,7 +1,7 @@ // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ use std::fs; use tauri::menu::{MenuBuilder, MenuItemBuilder, SubmenuBuilder}; -use tauri::Emitter; +use tauri::{Emitter, Manager}; use tauri_plugin_dialog::DialogExt; #[derive(Debug, Clone, serde::Serialize)] @@ -43,8 +43,12 @@ fn pick_folder(app: tauri::AppHandle) -> Option { } #[tauri::command] -fn read_dir(path: String) -> Result, String> { +fn read_dir(app: tauri::AppHandle, path: String) -> Result, String> { let entries = fs::read_dir(&path).map_err(|e| format!("无法读取目录: {}", e))?; + app.asset_protocol_scope() + .allow_directory(&path, true) + .map_err(|e| format!("无法授权媒体预览目录: {}", e))?; + let allowed_extensions = [ "md", "png", "jpg", "jpeg", "gif", "webp", "avif", "mp4", "webm", "mov", "m4v", "ogv", ]; diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index c9dbfd9..b37f409 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -21,7 +21,11 @@ } ], "security": { - "csp": null + "csp": null, + "assetProtocol": { + "enable": true, + "scope": [] + } } }, "bundle": { diff --git a/src/App.vue b/src/App.vue index 9546ccd..e4008cc 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,7 +1,7 @@