🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 简介 公众号经常有需要用到一些多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过**media_id**来进行的。 **素材管理接口对所有认证的订阅号和服务号开放。** # 新增临时素材 ![](https://box.kancloud.cn/6e7606c60373251f3cbcd2eb054ead86_984x289.png) ~~~ 注意点: 1、临时素材media_id是可复用的。 2、媒体文件在微信后台保存时间为3天,即3天后media_id失效。 3、上传临时素材的格式、大小限制与公众平台官网一致。 图片(image): 2M,支持PNG\JPEG\JPG\GIF格式 语音(voice): 2M,播放长度不超过60s,支持AMR\MP3格式 视频(video): 10MB,支持MP4格式 缩略图(thumb):64KB,支持JPG格式 ~~~ # 新增永久素材 对于常用的素材,开发者可通过本接口上传到微信服务器,永久使用。 如:企业logo,小图标,公众号有些场景,规定只能使用永久素材 ~~~ 请注意: 1、最近更新:永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽)。 2、公众号的素材库保存总数量有上限:图文消息素材、图片素材上限为5000,其他类型为1000。 3、素材的格式大小等要求与公众平台官网一致: 图片(image): 2M,支持bmp/png/jpeg/jpg/gif格式 语音(voice):2M,播放长度不超过60s,mp3/wma/wav/amr格式 视频(video):10MB,支持MP4格式 缩略图(thumb):64KB,支持JPG格式 ~~~ ~~~ 注: 永久素材的使用一定要谨慎,用于公众号规则我们必须用的地方和企业LOGO。 临时素材我们可以随便用。 ~~~ **说明:永久素材上传时,它的上传的文件域的名称必须为 media** 第一步:制作文件上传的html ![](https://box.kancloud.cn/5a20da887797bd5e8db493bcc3f6a28d_671x374.png) 第二步: 接受表单数据实现文件上传的功能 ![](https://box.kancloud.cn/324a2db51cb7944cbd5acf723d1a3035_566x331.png) 第三步: 把本服务器图片上传到公众号上 **临时接口使用** ![](https://box.kancloud.cn/03bae33778c4e518d00c671f5da1c9b8_879x386.png) **永久素材接口** ![](https://box.kancloud.cn/b99f41aff3845a6741c10360b8b769e0_1082x371.png) 编写实现上传到公众号平台的接口代码 ~~~ // 上传素材 //文件路径,上传类型,是否永久,做个表单,把这些传过来 public function uploadMaterial(string $path,string $type='image',$is_forever=0){ if ($is_forever == 0) { // 临时 $surl = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s'; }else{ // 永久 $surl = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=%s&type=%s'; } $url = sprintf($surl,$this->getAccessToken(),$type); // 上传素材到微信公众平台, http_request是封装的curl函数 $json = $this->http_request($url,[],$path); // json转为数组 $arr = json_decode($json,true); // 有前返回,没有则返回空 php7提供的null合并 return $arr['media_id'] ?? ''; } ~~~