From 9c04561419eb7e6f8a4282070aa133abd1a3ae99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 12 Sep 2026 11:18:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=8E=E7=A1=AE=20Raw=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=9B=B6=E6=8B=B7=E8=B4=9D=E4=B8=8A=E4=BC=A0=E7=BA=A6=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充 Bytes 所有权与 streaming multipart 注释 增加共享字节缓冲不转换的回归测试 --- .../platform-image/src/vector_engine/raw_edit.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 a749f06db..1bb1d2e25 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 @@ -25,6 +25,8 @@ pub struct RawImageEditOptions { } #[derive(Clone, Debug)] +/// Multipart input owned by the raw-edit endpoint. `Bytes` keeps the Axum +/// upload buffer shared until reqwest consumes it, avoiding a full-image copy. pub struct RawImageEditImage { pub bytes: Bytes, pub mime_type: String, @@ -489,4 +491,18 @@ mod tests { "raw_image_edit:构造请求客户端失败:builder failed" ); } + + #[test] + fn raw_edit_image_owns_shared_bytes_without_conversion() { + let bytes = bytes::Bytes::from_static(b"raw-image"); + let pointer = bytes.as_ptr(); + let image = RawImageEditImage { + bytes, + mime_type: "image/png".to_string(), + file_name: "image.png".to_string(), + }; + + assert_eq!(image.bytes.as_ptr(), pointer); + assert_eq!(image.bytes.as_ref(), b"raw-image"); + } }