diff --git a/server-rs/crates/platform-image/src/vector_engine/raw_edit.rs b/server-rs/crates/platform-image/src/vector_engine/raw_edit.rs index 64ae2887c..9c1205fb2 100644 --- a/server-rs/crates/platform-image/src/vector_engine/raw_edit.rs +++ b/server-rs/crates/platform-image/src/vector_engine/raw_edit.rs @@ -366,10 +366,16 @@ fn response_image_format( ) -> Result<(&'static str, &'static str), &'static str> { let Some(value) = entry .get("output_format") - .or_else(|| payload.get("output_format")) .and_then(Value::as_str) .map(str::trim) .filter(|value| !value.is_empty()) + .or_else(|| { + payload + .get("output_format") + .and_then(Value::as_str) + .map(str::trim) + .filter(|value| !value.is_empty()) + }) else { return Err("上游响应缺少 output_format"); }; @@ -455,6 +461,20 @@ mod tests { response_image_format(&json!({}), &json!({"output_format": "jpeg"})), Ok(("image/jpeg", "jpg")) ); + assert_eq!( + response_image_format( + &json!({"output_format": "png"}), + &json!({"output_format": ""}) + ), + Ok(("image/png", "png")) + ); + assert_eq!( + response_image_format( + &json!({"output_format": "webp"}), + &json!({"output_format": null}) + ), + Ok(("image/webp", "webp")) + ); assert!(response_image_format(&json!({}), &json!({})).is_err()); assert!(response_image_format(&json!({}), &json!({"output_format": "bmp"})).is_err()); }