From d31cac8cbcaf0e9ac9bd4570f700fe07bcb37c0d Mon Sep 17 00:00:00 2001 From: kdletters Date: Sat, 27 Jun 2026 22:36:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=AD=E6=96=87=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=90=8D=E7=9B=B4=E4=BC=A0=E7=AD=BE=E5=90=8D=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 OSS 文件名清洗中为空主体使用 file 兜底 补充中文文件名清洗回归测试 --- server-rs/crates/platform-oss/src/lib.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/server-rs/crates/platform-oss/src/lib.rs b/server-rs/crates/platform-oss/src/lib.rs index fe91fe457..d4aee7772 100644 --- a/server-rs/crates/platform-oss/src/lib.rs +++ b/server-rs/crates/platform-oss/src/lib.rs @@ -1182,9 +1182,11 @@ fn sanitize_file_name(raw: &str) -> Result { .collect::(); let stem = collapse_dashes(&stem); - if stem.is_empty() { - return Err(OssError::InvalidRequest("fileName 主体不合法".to_string())); - } + let stem = if stem.is_empty() { + "file".to_string() + } else { + stem + }; let extension = raw_extension .map(|extension| { @@ -1767,6 +1769,14 @@ mod tests { ); } + #[test] + fn sanitize_file_name_falls_back_when_stem_has_no_ascii_body() { + assert_eq!( + sanitize_file_name("剪贴板素材.png").expect("file name should sanitize"), + "file.png" + ); + } + #[test] fn sign_get_object_url_returns_signed_private_read_url() { let client = build_client();