From 925be4573d3c5f584add5b6908c45a94970dec6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Thu, 24 Sep 2026 18:00:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E7=89=A9=E6=89=A9=E5=B1=95=E5=90=8D?= =?UTF-8?q?=E5=85=9C=E5=BA=95=E8=AE=A4=E4=B8=8B=20image/jpg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - server-rs/crates/platform-tripo/src/common/types.rs:fallback_artifact_extension 补上 image/jpg 分支,非标准写法但确有 provider 这么回,预览图不再落到默认 .glb 后缀 - server-rs/crates/platform-tripo/src/common/types.rs:补用例覆盖 png / jpg / webp 与读不出形态时的 glb 兜底 --- .../crates/platform-tripo/src/common/types.rs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/server-rs/crates/platform-tripo/src/common/types.rs b/server-rs/crates/platform-tripo/src/common/types.rs index 0600e6d36..00326cc7d 100644 --- a/server-rs/crates/platform-tripo/src/common/types.rs +++ b/server-rs/crates/platform-tripo/src/common/types.rs @@ -293,6 +293,10 @@ fn fallback_artifact_extension(content_type: Option<&str>) -> &'static str { "png" } else if content_type.starts_with("image/jpeg") { "jpg" + } else if content_type.starts_with("image/jpg") { + // `image/jpg` 不是标准写法,但确有 provider 这么回;落到默认 `.glb` 会让一张 + // 预览图带上模型后缀,这里按声明值给回 jpg。 + "jpg" } else if content_type.starts_with("image/webp") { "webp" } else { @@ -341,6 +345,27 @@ mod tests { assert!(!stem.contains('.'), "`..` 必须被中性化:{stem}"); } + #[test] + fn fallback_extension_follows_the_declared_image_content_type() { + assert_eq!( + artifact_filename("preview", Some("image/png"), &artifact_url("/artifact")), + "preview.png" + ); + assert_eq!( + artifact_filename("preview", Some("image/jpg"), &artifact_url("/artifact")), + "preview.jpg" + ); + assert_eq!( + artifact_filename("preview", Some("image/webp"), &artifact_url("/artifact")), + "preview.webp" + ); + // 读不出形态时仍按模型产物兜底。 + assert_eq!( + artifact_filename("model", None, &artifact_url("/artifact")), + "model.glb" + ); + } + #[test] fn blank_stem_falls_back_to_a_fixed_name() { assert_eq!(