微信公眾平臺開發【素材管理】上傳臨時素材
公眾號經常有需要用到一些臨時性的多媒體素材的場景,例如在使用介面特別是傳送訊息時,對多媒體檔案、多媒體訊息的獲取和呼叫等操作,是通過media_id來進行的。
介面開放許可權:素材管理介面對所有認證的訂閱號和服務號開放。
介面呼叫說明
1、http請求方式
POST/FORM,需使用https
2、引數說明
引數 是否必須 說明 access_token 是 呼叫介面憑證 type 是 媒體檔案型別,分別有圖片(image)、語音(voice)、視訊(video)和縮圖(thumb) media 是 form-data中媒體檔案標識,有filename、filelength、content-type等資訊
3、返回資料說明
引數 描述
type 媒體檔案型別,分別有圖片(image)、語音(voice)、視訊(video)和縮圖(thumb,主要用於視訊與音樂格式的縮圖)
media_id 媒體檔案上傳後,獲取時的唯一標識
created_at 媒體檔案上傳時間戳
正確情況下的返回JSON資料包結果如:{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
錯誤情況下的返回JSON資料包示例如:{"errcode":40004,"errmsg":"invalid media type"}(此錯誤指無效媒體型別錯誤)
完整示例程式碼
1、上傳圖片“smallelife.jpg”到伺服器根目錄
2、將以下程式碼寫入到index.php檔案中,並將此檔案上傳到伺服器根目錄(記得修改AppID和AppSecret),具體如下:(完整程式碼下載)
<?php /** * 作者:smalle * 網址:http://blog.csdn.net/oldinaction * 公眾號:smallelife */ define("AppID","你的AppID"); define("AppSecret", "你的AppSecret"); /* 新增一個臨時素材 */ //url 裡面的需要2個引數一個 access_token 一個是 type(值可為image、voice、video和縮圖thumb) $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=".get_token()."&type=image"; if (class_exists('\CURLFile')) { $josn = array('media' => new \CURLFile(realpath("smallelife.jpg"))); } else { $josn = array('media' => '@' . realpath("smallelife.jpg")); } $ret = curl_post($url,$josn); $row = json_decode($ret);//對JSON格式的字串進行編碼 echo '此素材的唯一識別符號media_id為:'.$row->media_id;//得到上傳素材後,此素材的唯一識別符號media_id //獲取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實現post請求 function curl_post($url, $data = null) { //建立一個新cURL資源 $curl = curl_init(); //設定URL和相應的選項 curl_setopt($curl, CURLOPT_URL, $url); if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //執行curl,抓取URL並把它傳遞給瀏覽器 $output = curl_exec($curl); //關閉cURL資源,並且釋放系統資源 curl_close($curl); return $output; } ?>
執行示例結果
在瀏覽器中直接訪問index.php,便會輸出上傳檔案的media_id,如下圖:
注意事項
1、可以根據返回資料的相關引數獲取對應引數的值,如:$row->media_id
2、上傳的臨時多媒體檔案有格式和大小限制,如下:
- 圖片(image): 1M,支援JPG格式
- 語音(voice):2M,播放長度不超過60s,支援AMR\MP3格式
- 視訊(video):10MB,支援MP4格式
- 縮圖(thumb):64KB,支援JPG格式
======================================================================
關注【Smalle】【微信公眾號:smallelife】 捐贈【Smalle】【微信公眾號:smallelife】
關注就有豪禮相送哦,原始碼、工具、文件應有盡有 你的掃碼便是我前進的動力,掃碼、掃碼、掃碼
======================================================================