在上一講的主要講解了上傳臨時素材(傳送門:《微信公衆平臺開發【素材管理】上傳臨時素材》),下面就講講如何獲取此臨時素材。此處的獲取臨時素材指公衆號可以使用素材管理接口下載臨時的多媒體文件,下面以下載圖片爲例。
接口開放權限:素材管理接口對所有認證的訂閱號和服務號開放
調用格式及參數說明
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】
關注就有豪禮相送哦,源碼、工具、文檔應有盡有 你的掃碼便是我前進的動力,掃碼、掃碼、掃碼
======================================================================