# 上传图片

接口应在服务器端调用,不可在前端(小程序、网页、APP等)直接调用,具体可参考接口调用指南

接口英文名:img_upload

本接口可用于上传图片,上传后获取 media_id 支持其他接口使用。

# 1. 调用方式

# HTTPS 调用

POST https://api.weixin.qq.com/shop/ec/basics/img/upload?access_token=ACCESS_TOKEN&upload_type=UPLOAD_TYPE&resp_type=RESP_TYPE&height=HEIGHT&width=WIDTH

# 云调用

  • 调用方法:channels.ec.basics.img.upload

  • 出入参和 HTTPS 调用相同,调用方式可查看 云调用 说明文档

# 第三方调用

  • 本接口支持第三方平台代商家调用。

  • 该接口所属的权限集 id 为:85、129、131

  • 服务商获得其中之一权限集授权后,可通过使用 authorizer_access_token 代商家进行调用,具体可查看 第三方调用 说明文档。

# 2. 请求参数

# 查询参数 Query String parameters

参数名类型必填示例说明
access_tokenstringACCESS_TOKEN接口调用凭证,可使用 access_tokenauthorizer_access_token
upload_typenumber-传类型。0:二进制流;1:图片url(不支持301/302跳转),该参数为 URL 参数
resp_typenumber-返回数据类型。0:media_id和pay_media_id;1:图片链接(商品信息相关图片请务必使用此参数得到链接),该参数为 URL 参数
heightnumber-upload_type=0时必填,图片的高,单位:像素,该参数为 URL 参数
widthnumber-upload_type=0时必填,图片的宽,单位:像素,该参数为 URL 参数

# 请求体 Request Payload

参数名类型必填说明
img_urlstringupload_type=1时必填,图片url,该参数为 POST包请求参数
mediaformdataupload_type=0时必填,图片文件buffer

# 3. 返回参数

# 返回体 Response Payload

参数名类型说明
errcodenumber错误码
errmsgstring错误信息
pic_fileobject图片信息
img_urlstring图片 url

# Res.pic_file Object Payload

图片信息

参数名类型说明
media_idstringmedia_id
pay_media_idstring支付 media_id

# 4. 注意事项

  • resp_type=1时将会返回形如mmecimage.cn/p/{appid}/{imgKey}的图片链接,该链接永久有效,同一张图片,无需重复调用该接口重复上传;
  • 接口返回的图片链接有访问频率限制,超出访问频率后,会返回404状态码,请勿将该图片链接用于用户端(访问量较大)展示;
  • 当前访问频率限制规则:
    1. appid维度:10000/min
    2. imgKey维度:100/min
  • 接口返回的图片链接,支持进行图片处理(缩放/裁剪/压缩/水印等),具体使用方法参考图片处理,该文档内的download_url即为当前接口返回的图片链接;
  • 图片格式目前只支持bmp, jpg(jpeg), png, svg, webp,若使用upload_type=1的方式上传图片,平台侧会根据访问img_url后返回的content-type对文件格式进行判断,且不支持301/302跳转;
  • 图片上传大小限制:
    1. resp_type=0为2MB
    2. resp_type=1为10MB

# 平台支持的图片格式与content-type关系说明

图片格式 content-type
.bmp image/bmp
.bmp application/x-bmp
.jpg image/jpeg
.jpg image/jpg
.jpeg image/jpeg
.jpeg image/jpg
.png image/png
.png application/x-png
.svg text/xml
.webp image/webp

# 5. 代码示例

# 5.1 请求示例1

请求示例

curl -F media=@test.jpg 
"https://api.weixin.qq.com/channels/ec/basics/img/upload?access_token=ACCESS_TOKEN&upload_type=0&resp_type=0&height=108&width=108"

返回示例

{
    "errcode": 0,
    "errmsg": "ok",
    "pic_file": {
        "media_id": "THE_MEDIA_ID",
        "pay_media_id": "THE_PAY_MEDIA_ID"
    }
}

# 5.2 请求示例2

请求示例

curl -d "{\"img_url\":\"https://URL地址/yyy\"}" "https://api.weixin.qq.com/channels/ec/basics/img/upload?access_token=ACCESS_TOKEN&upload_type=1&resp_type=1"

返回示例

{
    "errcode": 0,
    "pic_file": {
        "img_url": "xxxxx"
    }
}

# 6. 错误码

以下是本接口的错误码列表,其他错误码可参考 通用错误码

错误码错误描述解决方案
10020055参数有误
10020056图片格式不合法, 只支持bmp, jpg(jpeg), png, svg, webp
10020057获取原图超过2s, 未返回结果超时
10020058上传图片失败,请重试
10020059图片为空
10020060图片大小超出限制
10020061图片URL非法,如:传入mmecimage.cn/p/前缀的图片
10020193不支持拉取原图301/302跳转
10020253原图url打开返回404
10020254原图url带了 //,无法支持该格式 url

# 7. 适用范围

本接口支持「微信小店」账号类型调用。其他账号类型如无特殊说明,均不可调用。