在上一讲的主要讲解了上传临时素材(传送门:《微信公众平台开发【素材管理】上传临时素材》),下面就讲讲如何获取此临时素材。此处的获取临时素材指公众号可以使用素材管理接口下载临时的多媒体文件,下面以下载图片为例。
接口开放权限:素材管理接口对所有认证的订阅号和服务号开放
调用格式及参数说明
http请求方式:GET,https调用(请注意,视频文件不支持https下载,调用该接口需http协议)
请求格式:https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
参数说明:
参数 是否必须 说明
access_token 是 调用接口凭证
media_id 是 媒体文件ID
基于SAE实现的源代码
本教程使用的是SAE服务器,由于SAE不能实现本地文件上传和下载,而需要通过Storage来实现,所有代码中会使用一些SAE官方给出的相关函数。
saeImage.php(完整代码下载)
<?php /** * 作者:smalle * 网址:http://blog.csdn.net/oldinaction * 微信公众号:smallelife */ define("AppID","你的AppID"); define("AppSecret", "你的AppSecret"); $media_id = '1wrAlWQg02Wc2-z5imqt9K4wzyrugukmMQFCh0tXmixRWKCOIe3Gh9YQa7WjJpeB';//上一讲中上传临时素材后返回的media_id $domain = 'smalle';//SAE的Storage domain名称 $filename = 'newSmallelife.jpg';//设置保存在domain中的文件名 $ch = curl_init('https://api.weixin.qq.com/cgi-bin/media/get?access_token='.get_token().'&media_id='.$media_id) ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; //curl_exec执行成功则返回执行结果 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; //在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出。 $output = curl_exec($ch) ; curl_close($ch); //将数据写入Storage $saes = new SaeStorage();//创建SaeStorage对象 $fileurl = $saes->write( $domain , $filename , $output );//将数据写入到Storage domain并返回存储在domain中此文件的url echo $fileurl;//输出文件地址 echo "<img src='".$fileurl."'>";//显示此图片 //获取access_token function get_token(){ $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".AppID."&secret=".AppSecret; $data = json_decode(file_get_contents($url),true); if($data['access_token']){ return $data['access_token']; }else{ echo "Error"; exit(); } } ?>
效果预览:
在浏览器运行之后,你会在你的SAE管理后台的Storage相应的domain中查看到此文件,由此则对应的media_id素材被下载到了本地。由下图可以看出是上一讲中上传的临时素材,不信可以扫的试试哦。
基于常规服务器的源代码
downImage.php(完整代码下载)
<?php /** * 作者:smalle * 网址:http://blog.csdn.net/oldinaction * 微信公众号:smallelife */ define("AppID","你的AppID"); define("AppSecret", "你的AppSecret"); $media_id = "1wrAlWQg02Wc2-z5imqt9K4wzyrugukmMQFCh0tXmixRWKCOIe3Gh9YQa7WjJpeB"; $url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=".get_token()."&media_id=".$media_id; $arr = curl_file($url); saveFile("newSmallelife.jpg",$arr); //获取access_token function get_token(){ $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".AppID."&secret=".AppSecret; $data = json_decode(file_get_contents($url),true); if($data['access_token']){ return $data['access_token']; }else{ echo "Error"; exit(); } } //curl 获取文件数据 function curl_file($url){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_NOBODY, 0);//只取body头 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//curl_exec执行成功后返回执行的结果;不设置的话,curl_exec执行成功则返回true $output = curl_exec($ch); curl_close($ch); return $output; } //保存文件到本地 function saveFile($filename, $filecontent){ $local_file = fopen($filename, 'w'); if (false !== $local_file){//不恒等于(恒等于=== 就是false只能等于false,而不等于0) if (false !== fwrite($local_file, $filecontent)) { fclose($local_file); } } } ?>
======================================================================
关注【Smalle】【微信公众号:smallelife】 捐赠【Smalle】【微信公众号:smallelife】
关注就有豪礼相送哦,源码、工具、文档应有尽有 你的扫码便是我前进的动力,扫码、扫码、扫码
======================================================================