首页 课程中心 问答&分享 读书 公众号框架 HUI H.JS 开放源 登录 & 注册
 《微信公众号开发权威教程》

公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放(注:自定义菜单接口和素材管理接口向第三方平台旗下未认证订阅号开放)。通过本接口,公众号可以新增临时素材(即上传临时多媒体文件)。

请注意
1、对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源。
2、media_id是可复用的。
3、素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式,语音大小不超过2M,长度不超过60秒(公众平台官网可以在文章中插入小于30分钟的语音,但这些语音不能用于群发等场景,只能放在文章内,这方面接口暂不支持),支持mp3/wma/wav/amr格式
4、需使用https调用本接口。


接口调用请求说明

http请求方式: POST/FORM,需使用https
https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):
curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"


参数说明

返回说明
正确情况下的返回JSON数据包结果如下:{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}。

错误情况下的返回JSON数据包示例如下(示例为无效媒体类型错误):{"errcode":40004,"errmsg":"invalid media type"}


上传的临时多媒体文件有格式和大小限制
图片(image): 2M,支持bmp/png/jpeg/jpg/gif格式
语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
视频(video):10MB,支持MP4格式
缩略图(thumb):64KB,支持JPG格式


完整代码

<?php
if(!empty($_FILES['file'])){
    include 'wx.php';
    $wechatObj->getAccessToken();
    //1、上传到服务器
    $targetName = 'uploads/'.$_FILES['file']['name'];
    move_uploaded_file($_FILES['file']['tmp_name'], $targetName);
    //2、同步到微信服务器
    $url = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$wechatObj->accessToken.'&type=image';
    $data = array('media' => '@'.$targetName);
    $ch  = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , false);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $res  = curl_exec($ch);
    echo $res;
    $curlStatus = curl_getinfo($ch);
    curl_close($ch);
}
?>
<html>
<head>
<title>demo</title>
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="black" name="apple-mobile-web-app-status-bar-style" />
<meta name="format-detection" content="telephone=no" />
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file" /><br />
    <input type="submit" value="上传" />
</form>
</body>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js" type="text/javascript"></script>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.10.2/jquery.js"></script>
</html>

小提醒

临时素材也可以来自于录音、相册等微信自身提高的接口。

书籍目录  (请点击阅读)