微信公众平台开发【素材管理】上传临时素材

公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过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]  view plain  copy
  1. <?php    
  2.    
  3. define("AppID","你的AppID");    
  4. define("AppSecret""你的AppSecret");    
  5.     
  6. /* 新增一个临时素材 */    
  7. //url 里面的需要2个参数一个 access_token 一个是 type(值可为image、voice、video和缩略图thumb)    
  8. $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=".get_token()."&type=image";    
  9. if (class_exists('\CURLFile')) {    
  10.     $josn = array('media' => new \CURLFile(realpath("smallelife.jpg")));    
  11. else {    
  12.     $josn = array('media' => '@' . realpath("smallelife.jpg"));    
  13. }    
  14.     
  15. $ret = curl_post($url,$josn);    
  16. $row = json_decode($ret);//对JSON格式的字符串进行编码    
  17. echo '此素材的唯一标识符media_id为:'.$row->media_id;//得到上传素材后,此素材的唯一标识符media_id    
  18.     
  19. //获取access_token    
  20. function get_token(){    
  21.     $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".AppID."&secret=".AppSecret;    
  22.     $data = json_decode(file_get_contents($url),true);    
  23.     if($data['access_token']){    
  24.         return $data['access_token'];    
  25.     }else{    
  26.         echo "Error";    
  27.         exit();    
  28.     }    
  29. }    
  30.     
  31. //curl实现post请求    
  32. function curl_post($url$data = null)    
  33. {    
  34.     //创建一个新cURL资源    
  35.     $curl = curl_init();    
  36.     //设置URL和相应的选项     
  37.     curl_setopt($curl, CURLOPT_URL, $url);    
  38.     if (!empty($data)){    
  39.         curl_setopt($curl, CURLOPT_POST, 1);    
  40.         curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    
  41.     }    
  42.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    
  43.     //执行curl,抓取URL并把它传递给浏览器    
  44.     $output = curl_exec($curl);    
  45.     //关闭cURL资源,并且释放系统资源    
  46.     curl_close($curl);    
  47.     return $output;    
  48. }    
  49.     
  50. ?>    

运行示例结果

在浏览器中直接访问index.PHP,便会输出上传文件的media_id


猜你喜欢

转载自blog.csdn.net/hwk_yellow/article/details/53183934
今日推荐