企业内部开发 服务端API 素材管理 概述
概述

目录

  • 使用场景
  • 上传的媒体文件限制
  • HTTP上传文件方法简析
  •       1. 构造HTTP请求包
  •       2. 设置HTTP头部信息
  • 使用场景

    在使用企业微信API接口中,往往开发者需要使用自定义的资源,比如发送本地图片消息,设置通讯录自定义头像等。
    为了实现同一资源文件,一次上传可以多次使用,这里提供了素材管理接口:以media_id来标识资源文件,实现文件的上传与下载。

    以发送消息为示例:

    以JSSDK选图片上传为示例:

    上传的媒体文件限制

    所有文件size必须大于5个字节

    • 图片(image):2MB,支持JPG,PNG格式
    • 语音(voice) :2MB,播放长度不超过60s,仅支持AMR格式
    • 视频(video) :10MB,支持MP4格式
    • 普通文件(file):20MB

    HTTP上传文件方法简析

    HTTP是文本协议,若需要传递二进制文件需要依赖于multipart/form-data格式

    1. 构造HTTP请求包

    单个文件的multipart/form-data格式,如下:

    --分隔符[换行]
    Content-Disposition: form-data; name="表单名"; filename="文件名"; filelength=文件内容大小[换行]
    Content-Type: 类型[换行]
    [换行]
    文件的二进制内容[换行]
    --分隔符--

    Content-Type根据不同文件类型可以设置对应不同的值,如下表格:

    文件类型Content-Type
    普通文件application/octet-stream
    jpg图片image/jpg
    png图片image/png
    bmp图片image/bmp
    amr音频voice/amr
    mp4视频video/mp4

    若我们设置:分隔符为acebdf13572468,文件名为wework.txt,文件内容为mytext,由于上传临时素材要求name固定为media,那么构造的请求内容为:

    --acebdf13572468
    Content-Disposition: form-data; name="media";filename="wework.txt"; filelength=6
    Content-Type: application/octet-stream
    
    mytext
    --acebdf13572468--

    2. 设置HTTP头部信息

    POST URL HTTP/1.1[换行]
    Content-Type: multipart/form-data; boundary=分隔符[换行]
    Content-Length: 请求体内容大小[换行]
    [换行]
    1步构造的请求体内容

    假定我们将第1步组装的文件内容上传到企业微信临时素材,分隔符取第1步设定值acebdf13572468,那么就得到如下:

    POST https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=accesstoken001&type=file HTTP/1.1
    Content-Type: multipart/form-data; boundary=acebdf13572468
    Content-Length: 168
    
    --acebdf13572468
    Content-Disposition: form-data; name="media";filename="wework.txt"; filelength=6
    Content-Type: application/octet-stream
    
    mytext
    --acebdf13572468--
    上一篇
    发送「学校通知」
    下一篇
    上传临时素材