From c12a0075e7f977e1e7438759771eb045f37bd2fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Tue, 21 Mar 2023 06:13:20 +0800 Subject: [PATCH] =?UTF-8?q?enhance(fs):=E7=BC=A9=E7=9F=AD=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=BB=E5=8F=96=E6=B5=81=E7=A8=8B=EF=BC=8C=E5=87=8F?= =?UTF-8?q?=E5=B0=91=E5=86=85=E5=AD=98=E5=A4=8D=E5=88=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/Cargo.lock | 26 ++++++++++++++++++++++++++ src-tauri/Cargo.toml | 1 + src-tauri/src/protocol.rs | 11 +++++------ 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index f4bea7f..cdef7a8 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -332,6 +332,7 @@ dependencies = [ "chrono", "image", "md-5", + "mime_guess", "mountpoints", "once_cell", "serde", @@ -1617,6 +1618,22 @@ dependencies = [ "autocfg", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "miniz_oxide" version = "0.6.2" @@ -3208,6 +3225,15 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" version = "0.3.10" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 0e49752..7851f3a 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -28,6 +28,7 @@ uuid = "1.3.0" mountpoints = "0.2.1" md-5 = "0.10.5" urlencoding = "2.1.2" +mime_guess = "2.0.4" [features] # this feature is used for production builds or when `devPath` points to the filesystem diff --git a/src-tauri/src/protocol.rs b/src-tauri/src/protocol.rs index 7b1d4cc..27ee32d 100644 --- a/src-tauri/src/protocol.rs +++ b/src-tauri/src/protocol.rs @@ -1,4 +1,4 @@ -use std::{error::Error, io::Cursor, path::Path}; +use std::{error::Error, fs, path::Path}; use tauri::{ http::{Request, Response, ResponseBuilder}, @@ -32,12 +32,11 @@ pub fn comic_protocol( .body(Vec::new()); } - let content = image::io::Reader::open(path)?.decode()?; - let mut bytes: Vec = Vec::new(); - content.write_to(&mut Cursor::new(&mut bytes), image::ImageOutputFormat::Png)?; + let mimetype = mime_guess::from_path(path); + let content = fs::read(path)?; response_builder - .mimetype("image/png") + .mimetype(mimetype.first_or_text_plain().essence_str()) .status(200) - .body(bytes) + .body(content) }