在上一講的主要講解了上傳臨時素材(傳送門:《微信公衆平臺開發【素材管理】上傳臨時素材》),下面就講講如何獲取此臨時素材。此處的獲取臨時素材指公衆號能夠使用素材管理接口下載臨時的多媒體文件,下面如下載圖片爲例。php
接口開放權限:素材管理接口對全部認證的訂閱號和服務號開放
json
http請求方式:GET,https調用(請注意,視頻文件不支持https下載,調用該接口需http協議)api
請求格式:https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID瀏覽器
參數說明:服務器
參數 是否必須 說明
access_token 是 調用接口憑證
media_id 是 媒體文件ID
本教程使用的是SAE服務器,因爲SAE不能實現本地文件上傳和下載,而須要經過Storage來實現,全部代碼中會使用一些SAE官方給出的相關函數。微信
saeImage.php(完整代碼下載)app
<?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素材被下載到了本地。由下圖能夠看出是上一講中上傳的臨時素材,不信能夠掃的試試哦。dom
downImage.php(完整代碼下載)curl
<?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】
關注就有豪禮相送哦,源碼、
工具、
文檔應有盡有
你的掃碼即是我前進的動力,
掃碼、
掃碼、
掃碼
======================================================================