校验处理图区域并明确 multipart 字节上传

将处理图真实尺寸传入视觉绑定校验,提前拒绝零尺寸和越界区域。

保持非法区域直接失败,不转换为 NeedRework。

将 image 和 mask multipart 部分改为 Part::bytes。
This commit is contained in:
2026-09-11 20:11:11 +08:00
parent e7cd008d7c
commit e7af7cf4e4
7 changed files with 89 additions and 17 deletions
@@ -139,7 +139,7 @@ pub async fn create_vector_engine_raw_image_edit(
// GPT-Image-2 原生只返回 b64_json;不要添加 URL 下载或 response_format 兼容分支。
.part(
"image",
Part::stream_with_length(image_bytes.clone(), image_bytes.len() as u64)
Part::bytes(image_bytes.to_vec())
.file_name(image_file_name)
.mime_str(image_mime_type.as_str())
.map_err(|error| invalid_request(failure_context, error.to_string()))?,
@@ -156,7 +156,7 @@ pub async fn create_vector_engine_raw_image_edit(
if let Some(mask) = options.mask {
form = form.part(
"mask",
Part::stream_with_length(mask.bytes.clone(), mask.bytes.len() as u64)
Part::bytes(mask.bytes.to_vec())
.file_name(mask.file_name)
.mime_str(mask.mime_type.as_str())
.map_err(|error| invalid_request(failure_context, error.to_string()))?,