zoukankan      html  css  js  c++  java
  • 微信公众平台开发【素材管理】上传临时素材

    公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过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,支持AMRMP3格式
    • 视频(video):10MB,支持MP4格式
    • 缩略图(thumb):64KB,支持JPG格式

    3、媒体文件在后台保存时间为3天,即3天后media_id失效。



     

    ===================================微笑微笑微笑===================================

    关注【Smalle】【微信公众号:smallelife】              微笑             捐赠【Smalle】【微信公众号:smallelife】

    关注就有豪礼相送哦,羡慕源码、羡慕工具、羡慕文档应有尽有      微笑       你的扫码便是我前进的动力,羡慕扫码、羡慕扫码、羡慕扫码

    ===================================微笑微笑微笑===================================

     

                                         

     


  • 相关阅读:
    微信开发创建公众号或小程序菜单45064: no permission to use weapp in menu rid:XXXXXXX
    大文件上传:秒传、断点续传、分片上传
    Linux 给文件夹或者文件增加权限
    常见的架构方式
    RabbitMQ集群
    常见的系统架构思想
    RabbitMQ问题分析
    RabbitMQ实战&管理界面
    Linux安装RabbitMQ
    Redis发布订阅及消息阻塞
  • 原文地址:https://www.cnblogs.com/oldinaction/p/5167467.html
Copyright © 2011-2022 走看看