700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 微信公众号开发(六)素材管理

微信公众号开发(六)素材管理

时间:2020-08-23 17:36:41

相关推荐

微信公众号开发(六)素材管理

微信公众号开发(六)素材管理

微信公众号在使用的接口的时候是通过media_id来进行的,所以在使用的接口的时候我们往往需要先上传素材,支持上传素材的格式和限制如下

图片(image): 2M,支持PNG\JPEG\JPG\GIF格式。语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式。视频(video):10MB,支持MP4格式。缩略图(thumb):64KB,支持JPG格式。

1、上传临时素材

媒体文件在微信后台保存时间为3天,即3天后media_id失效。详细文档请查看上传临时文件素材文档。

请求接口:https://api./cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

add_tmp_media.php,这里要注意PHP各版本间上传文件的差异。

<?phprequire_once("Utils.php");if (class_exists('CURLFile')) {//PHP5.5及以上//realpath返回绝对路径$filedata = array('media' => new CURLFile(realpath("images/img1.jpg")));} else {//PHP5.4及以下$filedata = array('media' => '@'.realpath("images/img1.jpg"));}$url = "https://api./cgi-bin/media/upload?access_token=".Utils::get_access_token()."&type=image";$result = Utils::https_request($url, $filedata);echo $result;

返回结果如下:

2、获取临时素材消息

请求接口:https://api./cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID

视频文件不能直接使用本接口下载。

get_tmp_media.php

<?php@header('Content-type: text/plain;charset=UTF-8');require_once("Utils.php");$media_id = "F11GfZC5zzC5XjJ3v1ORqay5pMrrtzv5bREF7-7f_ohjwxfXAZ-vjO3VRaEaOu0f";$url = "https://api./cgi-bin/media/get?access_token=".Utils::get_access_token()."&media_id=".$media_id;$fileInfo = https_request($url);$filename = "gg.jpg";//$fileInfo["body"]保存了图片的内容save_weixin_file($filename, $fileInfo["body"]);var_dump($fileInfo);//保存图片到本地function save_weixin_file($filename, $fileConent){$local_file = fopen($filename, "w");if (false !== $local_file){if (false !== fwrite($local_file, $fileConent)){fclose($local_file);}}}function https_request($url){$ch = curl_init($url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_NOBODY, 0); //只取body头curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//$package是返回的图片$package = curl_exec($ch);//$httpinfo 响应头$httpinfo = curl_getinfo($ch);curl_close($ch);//将body和响应头合并到一个数组$imageAll = array_merge(array("header"=>$httpinfo), array("body"=> $package));return $imageAll;}

返回的响应头如下:

访问服务器上下载的文件,结果如下:

3、新增永久素材

对于常用的素材,开发者可通过本接口上传到微信服务器,永久使用。新增的永久素材也可以在公众平台官网素材管理模块中查询管理。

除了可以上传以上提到的4种素材外,还可以上传图文素材。

以下是一些说明:

公众号的素材库保存总数量有上限:图文消息素材、图片素材上限为5000,其他类型为1000。图文消息的具体内容中,微信后台将过滤外部的图片链接,图片url需通过"上传图文消息内的图片获取URL"接口上传图片获取。"上传图文消息内的图片获取URL"接口所上传的图片,不占用公众号的素材库中图片数量的5000个的限制,图片仅支持jpg/png格式,大小必须在1MB以下。图文消息支持正文中插入自己帐号和其他公众号已群发文章链接的能力。

上传图文消息内的图片

本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制。图片仅支持jpg/png格式,大小必须在1MB以下。这里的图片是在图文消息的content字段里面使用的。

接口:https://api./cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

add_news_img.php

<?phprequire_once("Utils.php");$url= "https://api./cgi-bin/media/uploadimg?access_token=".Utils::get_access_token();$pathArr = array("images/img1.jpg", "images/img2.jpg", "images/img3.jpg");$result = uploa_imgs($url, $pathArr);var_dump($result);//上传多张图片function uploa_imgs($url, $pathArr){$resultArr = array();forEach ($pathArr as $path){if (class_exists('CURLFile')) {//PHP5.5及以上//realpath返回绝对路径$filedata = array('media' => new CURLFile(realpath($path)));} else {//PHP5.4及以下$filedata = array('media' => '@'.realpath($path));}$result = Utils::https_request($url, $filedata);array_push($resultArr, $result);}return $resultArr;}

返回结果如下:

array(3) { [0]=> string(138) "{"url":"http:\/\/\/mmbiz_jpg\/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoql6CW1Mp9kN0ARibjyWGqCD6w8AgcHUcN7iaRKmEIcVMBXzcicibEzw31w\/0"}" [1]=> string(135) "{"url":"http:\/\/\/mmbiz_jpg\/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoK46dGsp7SJbWnDlrhaSC9ogrTC88KbXuibO8MEhCHwbxd006OmYQUxg\/0"}" [2]=> string(138) "{"url":"http:\/\/\/mmbiz_jpg\/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoSzCu2VqqL6icnbf5Uq2b86wLOzUJCO9oyOYsyh2lnEzgicibHUdeicMGoQ\/0"}" }

上传图文消息

上传图文消息的接口是:https://api./cgi-bin/material/add_news?access_token=ACCESS_TOKEN。有关字段含义可以参考新增永久图文消息素材,此接口在测试号中一天只能调用10次。

add_news.php

<?php//<img src=\"http:\/\/\/mmbiz_jpg\/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoql6CW1Mp9kN0ARibjyWGqCD6w8AgcHUcN7iaRKmEIcVMBXzcicibEzw31w\/0\"/>require_once("Utils.php");$newsjson = '{"articles": [{"title": "第一个图文永久素材","thumb_media_id": "FrsRJ3g3BHR-pIkuFLARnHjI9Cq9lDFas4Kp8otlAUQ","author": "Perter","digest": "第一个图文永久素材摘要","show_cover_pic": 1,"content": "123","content_source_url": ""}]}';$url = "https://api./cgi-bin/material/add_news?"."access_token=".Utils::get_access_token();Utils::logger($url);$result = Utils::https_request($url, $newsjson);echo $result;

返回如下:

{"media_id":"FrsRJ3g3BHR-pIkuFLARnAwGsFjf8Rckbd63rFBsE4o"}

注意这里的thumb_media_id要使用永久素材接口上传接口获得,并将type设为thumb,,有时可能会返回{"errcode":40007,"errmsg":"invalid media_id hint: [UNi0871e541]"}

网上有一些解决方案是换成临时素材接口,但是这在最新版中是不正确的,原因是永久图文的json字符串错误,找到就可以了。

上传其他素材消息

其他素材包括图片(image)、语音(voice)、视频(video)和缩略图(thumb),图片素材将进入公众平台官网素材管理模块中的默认分组。视频消息还要多post一个description表单过去,description格式如下:

{"title":VIDEO_TITLE,"introduction":INTRODUCTION}

发送图片

add_material.php

<?phprequire_once("Utils.php");$url= "https://api./cgi-bin/material/add_material?access_token=".Utils::get_access_token()."&type=image";$pathArr = array("images/img1.jpg", "images/img2.jpg", "images/img3.jpg");$result = uploa_imgs($url, $pathArr);var_dump($result);//上传多张图片function uploa_imgs($url, $pathArr){$resultArr = array();forEach ($pathArr as $path){if (class_exists('CURLFile')) {//PHP5.5及以上//realpath返回绝对路径$filedata = array('media' => new CURLFile(realpath($path)));} else {//PHP5.4及以下$filedata = array('media' => '@'.realpath($path));}$result = Utils::https_request($url, $filedata);array_push($resultArr, $result);}return $resultArr;}

结果如下,仅图片才有url字段返回。

array(3) { [0]=> string(210) "{"media_id":"FrsRJ3g3BHR-pIkuFLARnPz6IegQ220nYBKW4KIjzWo","url":"http:\/\/\/mmbiz_jpg\/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoUPZ1Bdf9W7ncib8AB0AQaa0LUibWYicLJ1ZbiacUdDQian9us7E5p2Rxiaiaw\/0?wx_fmt=jpeg"}" [1]=> string(205) "{"media_id":"FrsRJ3g3BHR-pIkuFLARnAte6HkrmV3Ll7zhmoGyZwE","url":"http:\/\/\/mmbiz_jpg\/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkolMOlXOZazUNdDXaxTiabEB8xHDBa3lfjupHWn2vxicToxEVcfk5vRmxg\/0?wx_fmt=jpeg"}" [2]=> string(204) "{"media_id":"FrsRJ3g3BHR-pIkuFLARnDyvPgsg0lz6TKJvRMCaIhg","url":"http:\/\/\/mmbiz_jpg\/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoEXUXh2653R0tIZCdsoMq2KPvENbOGWAt0qUL9LzyqsWR2TibjKB9vVA\/0?wx_fmt=jpeg"}" }

发送视频

修改add_material.php如下:

<?phprequire_once("Utils.php");$url= "https://api./cgi-bin/material/add_material?access_token=".Utils::get_access_token()."&type=video";$pathArr = array("movie/aa.mp4");$result = uploa_imgs($url, $pathArr);var_dump($result);//上传多张图片function uploa_imgs($url, $pathArr){$resultArr = array();forEach ($pathArr as $path){if (class_exists('CURLFile')) {//PHP5.5及以上//realpath返回绝对路径//$filedata = array('media' => new CURLFile(realpath($path)));$filedata = array('media' => new CURLFile(realpath($path)),"description"=>'{"title": "111", "introduction":INTRODUCTION}');} else {//PHP5.4及以下//$filedata = array('media' => '@'.realpath($path));$filedata = array('media' => '@'.realpath($path),"description"=>'{"title": "111", "introduction":INTRODUCTION}');}$result = Utils::https_request($url, $filedata);array_push($resultArr, $result);}return $resultArr;}

返回结果如下:

array(1) { [0]=> string(58) "{"media_id":"FrsRJ3g3BHR-pIkuFLARnMPNEDjZn0upTAeXrqBGP5k"}" }

4、获取永久素材

在新增了永久素材后,开发者可以根据media_id通过本接口下载永久素材。公众号在公众平台官网素材管理模块中新建的永久素材,可通过"获取素材列表"获知素材的media_id。此接口不能获取临时素材。

接口:https://api./cgi-bin/material/get_material?access_token=ACCESS_TOKEN

get_material.php

<?php@header('Content-type: text/plain;charset=UTF-8');require_once("Utils.php");$mediaId = '{"media_id": "FrsRJ3g3BHR-pIkuFLARnAwGsFjf8Rckbd63rFBsE4o"}';$url = "https://api./cgi-bin/material/get_material?"."access_token=".Utils::get_access_token();$result = Utils::https_request($url, $mediaId);echo $result;

返回永久图文素材如下:

{"news_item": [{"title": "第一个图文永久素材","author": "Perter","digest": "第一个图文永久素材摘要","content": "123","content_source_url": "","thumb_media_id": "FrsRJ3g3BHR-pIkuFLARnHjI9Cq9lDFas4Kp8otlAUQ","show_cover_pic": 1,"url": "http://mp./s?__biz=MzUzMzI2OTQ3Mw==&mid=100000013&idx=1&sn=a6d09fe2e87c320b69a284b1dee01c4b&chksm=7aa7df834dd05695e0dfa4108fee82f8734d52430f93f4e24b0077de2e1712345e7d87f25fda#rd","thumb_url": "/mmbiz_jpg/rE2vM1t75ANDqb5Ud7WdHqo3oWodmOtCBPxaicWWs4Gg7kwmqx2vb3NkkuzM8iczib4qltC8GQYib4xHqXu7SwZRrw/0?wx_fmt=jpeg","need_open_comment": 0,"only_fans_can_comment": 0}],"create_time": 1505139219,"update_time": 1505139219}

返回永久视频素材如下:

{"title": "111","description": "","down_url": "http://125.39.7.29/vweixinp./1007_12f949a80e4e4271bd6763dd76d00931.f10.mp4?vkey=4C0541D9528CE21BACCE2CE8ED46405ABBE24922EBCF5CB40682B1DB1923DD2F103E6C8C4BB2E364191CE9E338874FC69ADB754B69944E03F66B5FC423F228FEB7F7FA42CF83C94EBEDB0ECE1C58C0ADA32497EA2308510B&sha=0&save=1"}

返回永久图片素材如下,直接返回图片:

5、删除永久素材

在新增了永久素材后,开发者可以根据本接口来删除不再需要的永久素材,节省空间。请谨慎操作本接口,因为它可以删除公众号在公众平台官网素材管理模块中新建的图文消息、语音、视频等素材(但需要先通过获取素材列表来获知素材的media_id)。临时素材无法通过本接口删除。

删除接口:https://api./cgi-bin/material/del_material?access_token=ACCESS_TOKEN

del_material.php

<?php@header('Content-type: text/plain;charset=UTF-8');require_once("Utils.php");$mediaId = '{"media_id": "FrsRJ3g3BHR-pIkuFLARnDyvPgsg0lz6TKJvRMCaIhg"}';$url = "https://api./cgi-bin/material/del_material?"."access_token=".Utils::get_access_token();$result = Utils::https_request($url, $mediaId);echo $result;

返回接口如下:

{"errcode":0,"errmsg":"ok"}

6、修改永久图文素材

开发者可以通过本接口对永久图文素材进行修改。也可以修改在公众平台官网素材管理模块中保存的图文消息(永久图文素材)。

接口:https://api./cgi-bin/material/update_news?access_token=ACCESS_TOKEN

update_news.php

<?php//<img src=\"http:\/\/\/mmbiz_jpg\/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoql6CW1Mp9kN0ARibjyWGqCD6w8AgcHUcN7iaRKmEIcVMBXzcicibEzw31w\/0\"/>require_once("Utils.php");$newsjson = '{"media_id": "FrsRJ3g3BHR-pIkuFLARnAwGsFjf8Rckbd63rFBsE4o","index": 0,"articles":{"title": "第一个图文永久素材","thumb_media_id": "FrsRJ3g3BHR-pIkuFLARnHjI9Cq9lDFas4Kp8otlAUQ","author": "Perter","digest": "第一个图文永久素材摘要","show_cover_pic": 1,"content": "123","content_source_url": ""}}';$url = "https://api./cgi-bin/material/update_news?"."access_token=".Utils::get_access_token();$result = Utils::https_request($url, $newsjson);echo $result;

返回结果如下:

{"errcode":0,"errmsg":"ok"}

7、获取素材总数

开发者可以根据本接口来获取永久素材的列表,需要时也可保存到本地,永久素材的总数,也会计算公众平台官网素材管理中的素材,图片和图文消息素材(包括单图文和多图文)的总数上限为5000,其他素材的总数上限为1000。

接口:https://api./cgi-bin/material/get_materialcount?access_token=ACCESS_TOKEN

get_materialcount.php

<?php@header('Content-type: text/plain;charset=UTF-8');require_once("Utils.php");$url = "https://api./cgi-bin/material/get_materialcount?"."access_token=".Utils::get_access_token();$result = Utils::https_request($url);echo $result;

返回结果如下:

{"voice_count": 0,"video_count": 1,"image_count": 9,"news_count": 1}

8、获取素材列表

在新增了永久素材后,开发者可以分类型获取永久素材的列表。获取永久素材的列表,也包含公众号在公众平台官网素材管理模块中新建的图文消息、语音、视频等素材。临时素材无法通过本接口获取。

接口:https://api./cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN

batchget_material.php

<?php@header('Content-type: text/plain;charset=UTF-8');require_once("Utils.php");$data = '{"type":"news","offset":0,"count":10}';$url = "https://api./cgi-bin/material/batchget_material?"."access_token=".Utils::get_access_token();Utils::logger($url);$result = Utils::https_request($url, $data);echo $result;

返回图片结果如下:

{"item": [{"media_id": "FrsRJ3g3BHR-pIkuFLARnHjI9Cq9lDFas4Kp8otlAUQ","name": "/home/bae/app/images/img1.jpg","update_time": 1505139076,"url": "/mmbiz_jpg/rE2vM1t75ANDqb5Ud7WdHqo3oWodmOtCBPxaicWWs4Gg7kwmqx2vb3NkkuzM8iczib4qltC8GQYib4xHqXu7SwZRrw/0?wx_fmt=jpeg"},{"media_id": "FrsRJ3g3BHR-pIkuFLARnPV3S3ztUJSSA5BTlACflIw","name": "/home/bae/app/images/img3.jpg","update_time": 1505034665,"url": "/mmbiz_jpg/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoEXUXh2653R0tIZCdsoMq2KPvENbOGWAt0qUL9LzyqsWR2TibjKB9vVA/0?wx_fmt=jpeg"},{"media_id": "FrsRJ3g3BHR-pIkuFLARnGfOKWyYscHpu4GuP6zrbxM","name": "/home/bae/app/images/img2.jpg","update_time": 1505034663,"url": "/mmbiz_jpg/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkolMOlXOZazUNdDXaxTiabEB8xHDBa3lfjupHWn2vxicToxEVcfk5vRmxg/0?wx_fmt=jpeg"},{"media_id": "FrsRJ3g3BHR-pIkuFLARnFQDGg4wLF0SE78VErWMwoU","name": "/home/bae/app/images/img1.jpg","update_time": 1505034662,"url": "/mmbiz_jpg/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoUPZ1Bdf9W7ncib8AB0AQaa0LUibWYicLJ1ZbiacUdDQian9us7E5p2Rxiaiaw/0?wx_fmt=jpeg"},{"media_id": "FrsRJ3g3BHR-pIkuFLARnGmjlQO3rC7Wg4qXVzYDydY","name": "/home/bae/app/images/img3.jpg","update_time": 1505034395,"url": "/mmbiz_jpg/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoEXUXh2653R0tIZCdsoMq2KPvENbOGWAt0qUL9LzyqsWR2TibjKB9vVA/0?wx_fmt=jpeg"},{"media_id": "FrsRJ3g3BHR-pIkuFLARnBQJiN0m3xA7G6AvPfrPmHg","name": "/home/bae/app/images/img2.jpg","update_time": 1505034394,"url": "/mmbiz_jpg/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkolMOlXOZazUNdDXaxTiabEB8xHDBa3lfjupHWn2vxicToxEVcfk5vRmxg/0?wx_fmt=jpeg"},{"media_id": "FrsRJ3g3BHR-pIkuFLARnHxkKn2u0OoAYlg7eXiUbVI","name": "/home/bae/app/images/img1.jpg","update_time": 1505034392,"url": "/mmbiz_jpg/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoUPZ1Bdf9W7ncib8AB0AQaa0LUibWYicLJ1ZbiacUdDQian9us7E5p2Rxiaiaw/0?wx_fmt=jpeg"},{"media_id": "FrsRJ3g3BHR-pIkuFLARnAte6HkrmV3Ll7zhmoGyZwE","name": "/home/bae/app/images/img2.jpg","update_time": 1505031096,"url": "/mmbiz_jpg/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkolMOlXOZazUNdDXaxTiabEB8xHDBa3lfjupHWn2vxicToxEVcfk5vRmxg/0?wx_fmt=jpeg"},{"media_id": "FrsRJ3g3BHR-pIkuFLARnPz6IegQ220nYBKW4KIjzWo","name": "/home/bae/app/images/img1.jpg","update_time": 1505031094,"url": "/mmbiz_jpg/rE2vM1t75APxcWy4fPrtqYxJfTKgnQkoUPZ1Bdf9W7ncib8AB0AQaa0LUibWYicLJ1ZbiacUdDQian9us7E5p2Rxiaiaw/0?wx_fmt=jpeg"}],"total_count": 9,"item_count": 9}

返回图文结果如下:

{"item": [{"media_id": "FrsRJ3g3BHR-pIkuFLARnAwGsFjf8Rckbd63rFBsE4o","content": {"news_item": [{"title": "第一个图文永久素材","author": "Perter","digest": "第一个图文永久素材摘要","content": "123","content_source_url": "","thumb_media_id": "FrsRJ3g3BHR-pIkuFLARnHjI9Cq9lDFas4Kp8otlAUQ","show_cover_pic": 1,"url": "http://mp./s?__biz=MzUzMzI2OTQ3Mw==&mid=100000013&idx=1&sn=a6d09fe2e87c320b69a284b1dee01c4b&chksm=7aa7df834dd05695e0dfa4108fee82f8734d52430f93f4e24b0077de2e1712345e7d87f25fda#rd","thumb_url": "/mmbiz_jpg/rE2vM1t75ANDqb5Ud7WdHqo3oWodmOtCBPxaicWWs4Gg7kwmqx2vb3NkkuzM8iczib4qltC8GQYib4xHqXu7SwZRrw/0?wx_fmt=jpeg","need_open_comment": 0,"only_fans_can_comment": 0}],"create_time": 1505139219,"update_time": 1505142464},"update_time": 1505142464}],"total_count": 1,"item_count": 1}

相关博客

微信公众号开发(一)服务器及接口的配置

微信公众号开发(二)基础接口

微信公众号开发(三)获取access_token

微信公众号开发(四)自定义菜单

微信公众号开发(五)个性化菜单

微信公众号开发(六)素材管理

微信公众号开发(七)发送客服消息

微信公众号开发(八)用户管理

微信公众号开发(九)群发消息接口

微信公众号开发(十)模板消息

微信公众号开发(十一)生成带参数二维码

微信公众号开发(十二)OAuth2.0网页授权

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。