You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Flask实现单请求多图片(最多4张)收发的方案问询

嘿,你的思路已经很接近最优解啦!要实现单请求发送1-4张图片的功能,其实可以基于你现有的单图逻辑做扩展,核心是让base64配置数组和图片Base64内容数组一一对应,这样服务端就能正确解析每张图的元信息和内容。

简便的多图实现方案

这里有两种简洁的实现方式,你可以根据服务端的解析逻辑来选择:

方案1:统一/有序图片标识(适合服务端按数组顺序处理)

这种方式和你给出的示例思路高度契合,只需要把base64里的配置也改成数组,和图片内容数组一一对应即可:

def prepare_multiple_images(images):
    # 先校验图片数量范围(1-4张)
    if not 1 <= len(images) <= 4:
        raise ValueError("图片数量需控制在1到4张之间")
    
    # 生成每张图片的Base64内容数组
    img_b64s = [fileToB64(img) for img in images]
    # 生成对应的base64配置数组——如果服务端允许重复name,就统一用'img';如果需要唯一标识,就按序号命名
    base64_configs = [{'name': 'img', 'contentType': 'image/png'} for _ in images]
    # 或者用带序号的name:base64_configs = [{'name': f'img_{i+1}', 'contentType': 'image/png'} for i in range(len(images))]
    
    return {
        'base64': base64_configs,
        'imgs': img_b64s
    }

小提醒:如果服务端要求每个图片的name唯一,就用带序号的img_1、img_2;如果支持按数组顺序处理重复name,统一用img会更简洁。

方案2:键值对映射(适合服务端按名称识别)

如果服务端更习惯通过键名来获取单张图片,也可以把图片内容封装成键值对字典,对应的base64配置匹配键名:

def prepare_multiple_images(images):
    if not 1 <= len(images) <= 4:
        raise ValueError("图片数量需控制在1到4张之间")
    
    img_content = {}
    base64_configs = []
    for idx, img in enumerate(images):
        key = f'img_{idx+1}'
        img_content[key] = fileToB64(img)
        base64_configs.append({'name': key, 'contentType': 'image/png'})
    
    return {
        'base64': base64_configs,
        **img_content  # 将图片键值对展开到返回字典中
    }

额外注意点

  • 记得根据图片的实际格式调整contentType,比如JPG图片用image/jpeg,避免服务端解析出错;
  • 如果fileToB64函数没有自动处理格式,建议在转换前先确认每张图片的类型,再匹配对应的contentType。

内容的提问来源于stack exchange,提问作者user4833046

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:08:08