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

如何定义图片上传与获取的OpenAPI描述?类型与格式选型疑问

图片上传与获取的OpenAPI描述规范

问题分析

你当前用application/json传递图片并将image字段设为string+byte的写法,本质是通过base64编码传递图片,但这并非文件上传的常规做法——大图片用base64会增加约33%的体积,且性能不如直接传二进制文件。下面给出两种符合规范的实现方案:

方案1:用multipart/form-data上传(推荐)

这是上传文件的标准方式,支持直接传递二进制图片,无需编码,适合绝大多数场景:

/uploadimage:
  post:
    tags: 
      - images
    summary: 上传图片
    requestBody:  
      content:
        multipart/form-data:
          schema:
            type: object
            properties:
              imageID:
                type: integer
                example: 103983
              image:
                type: string
                format: binary  # 表示二进制文件
                description: 要上传的图片文件
      required:
        - image  # 必填字段可根据实际需求调整

方案2:用application/json传递base64编码图片(适合小图)

如果必须通过JSON传递,format: byte是OpenAPI规范中表示base64编码二进制数据的正确写法,此时image字段的值是图片文件的base64编码字符串:

/uploadimage:
  post:
    tags: 
      - images
    summary: 上传base64编码的图片
    requestBody:  
      content:
        application/json:
          schema:
            type: object
            properties:
              imageID:
                type: integer
                example: 103983
              image:
                type: string
                format: byte  # 对应base64编码的二进制数据
                example: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
      required:
        - image

图片获取API示例

补充对应的图片获取接口,通常返回二进制图片数据:

/getimage/{imageID}:
  get:
    tags:
      - images
    summary: 根据ID获取图片
    parameters:
      - name: imageID
        in: path
        required: true
        schema:
          type: integer
          example: 103983
    responses:
      '200':
        description: 成功返回图片
        content:
          image/png:  # 支持的图片格式,可按需添加image/jpeg等
            schema:
              type: string
              format: binary

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:40:08