天天看点

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

公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过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"}(此错误指无效媒体类型错误)

完整示例代码

<?php
/**
* 作者:smalle
* 公众号: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 = "
​​        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;
• }
• • ?>
​​