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

    在上一讲的主要讲解了上传临时素材(传送门:《微信公众平台开发【素材管理】上传临时素材》),下面就讲讲如何获取此临时素材。此处的获取临时素材指公众号可以使用素材管理接口下载临时的多媒体文件,下面以下载图片为例。

    接口开放权限:素材管理接口对所有认证的订阅号和服务号开放

    调用格式及参数说明

    http请求方式:GET,https调用(请注意,视频文件不支持https下载,调用该接口需http协议)

    请求格式:https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID

    参数说明:

    参数			是否必须	说明
    access_token	是	 	调用接口凭证
    media_id	 	是	 	媒体文件ID

    基于SAE实现的源代码

    本教程使用的是SAE服务器,由于SAE不能实现本地文件上传和下载,而需要通过Storage来实现,所有代码中会使用一些SAE官方给出的相关函数。

    saeImage.php完整代码下载

    <?php
    /** 
      * 作者:smalle 
      * 网址:http://blog.csdn.net/oldinaction 
      * 微信公众号:smallelife 
      */ 
    
    define("AppID","你的AppID");
    define("AppSecret", "你的AppSecret");
    
    $media_id = '1wrAlWQg02Wc2-z5imqt9K4wzyrugukmMQFCh0tXmixRWKCOIe3Gh9YQa7WjJpeB';//上一讲中上传临时素材后返回的media_id
    $domain = 'smalle';//SAE的Storage domain名称
    $filename = 'newSmallelife.jpg';//设置保存在domain中的文件名
    
    $ch = curl_init('https://api.weixin.qq.com/cgi-bin/media/get?access_token='.get_token().'&media_id='.$media_id) ;
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; //curl_exec执行成功则返回执行结果
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; //在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出。
    $output = curl_exec($ch) ;
    curl_close($ch);
    //将数据写入Storage
    $saes = new SaeStorage();//创建SaeStorage对象
    $fileurl = $saes->write( $domain , $filename , $output );//将数据写入到Storage domain并返回存储在domain中此文件的url
    
    echo $fileurl;//输出文件地址
    echo "<img src='".$fileurl."'>";//显示此图片
    
    //获取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();
    	}
    }
    
    ?>

    效果预览:

    在浏览器运行之后,你会在你的SAE管理后台的Storage相应的domain中查看到此文件,由此则对应的media_id素材被下载到了本地。由下图可以看出是上一讲中上传的临时素材,不信可以扫的试试哦。


    基于常规服务器的源代码

    downImage.php(完整代码下载

    <?php
    /** 
      * 作者:smalle 
      * 网址:http://blog.csdn.net/oldinaction 
      * 微信公众号:smallelife 
      */
    
    define("AppID","你的AppID");
    define("AppSecret", "你的AppSecret");
    
    $media_id = "1wrAlWQg02Wc2-z5imqt9K4wzyrugukmMQFCh0tXmixRWKCOIe3Gh9YQa7WjJpeB";
    $url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=".get_token()."&media_id=".$media_id;
    $arr = curl_file($url);
    saveFile("newSmallelife.jpg",$arr);
    
    //获取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 获取文件数据
    function curl_file($url){
    	$ch = curl_init($url);
    	curl_setopt($ch, CURLOPT_HEADER, 0);
    	curl_setopt($ch, CURLOPT_NOBODY, 0);//只取body头
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//curl_exec执行成功后返回执行的结果;不设置的话,curl_exec执行成功则返回true
    	$output = curl_exec($ch);
    	curl_close($ch);
    	return $output;
    }
    
    //保存文件到本地
    function saveFile($filename, $filecontent){
    	$local_file = fopen($filename, 'w');
    	if (false !== $local_file){//不恒等于(恒等于=== 就是false只能等于false,而不等于0)
    		if (false !== fwrite($local_file, $filecontent)) {
    			fclose($local_file);
    		}
    	}
    }
    
    ?>



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

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

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

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

     

                                         


  • 相关阅读:
    傻帽
    csc编译c#文件
    真空
    继承,多态及抽象性
    HASH算法
    正则表达式
    js向数组和map添加元素
    详解TypeScript项目中的tsconfig.json配置
    TS:元素隐式具有 “any“ 类型,因为类型为 “any“ 的表达式不能用于索引类型
    yarn基本命令
  • 原文地址:https://www.cnblogs.com/oldinaction/p/5167465.html
Copyright © 2011-2022 走看看