微信公众号(四)——上传永久素材(图片)

微信公众号在使用的接口的时候是通过media_id来进行的,所以在使用的接口的时候我们往往需要先上传素材,支持上传素材的格式和限制如下

图片(image): 2M,支持PNG\JPEG\JPG\GIF格式。
语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式。
视频(video):10MB,支持MP4格式。
缩略图(thumb):64KB,支持JPG格式。

上传永久素材:

	/**
     * 上传永久素材(图片)
     */
	 public function media_id_by_img(){ 
		$type = "image";  //声明上传的素材类型,这里为image
		$token = $this->getSessionAccessToken();//调用接口需要获取token,这里使用一个封装好的调取access_token的函数
		$url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$token."&type=".$type;
				//这里是请求地址,token和素材类型通过get方式传递
		$file_path = "/data/web/crm/kid2/public/cxwl.jpg";
		
				//这里声明文件的路径,使用绝对路径
		// $file_data = array('media'  => '@'.$file_path);
				//传递的数组,方式一:使用'@'符号加上文件的绝对路径来指引文件。这种方式适合PHP5.5之前的版本,
		$file_data = array("media"  => new \CURLFile($file_path));
				//传递的数组,方式二:从PHP5.5版本以后,引入了新的CURLFile 类来指向文件,参数传入的也是绝对路径
		$result=$this->postcurl($url,$file_data);
		dump($result);//返回结果

	 }

getSessionAccessToken:

/**
     * 获取AccessToken
     * @return mixed
     */
    public function getSessionAccessToken(){
        //第一次获取 或者已经超时  重新获取access_token
        //get请求方式
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".APP_ID."&secret=".SECRET;
        $access_token_Arr =  $this->https_request($url);
		 // dump($access_token_Arr['access_token']);exit();
        return $access_token_Arr['access_token'];
    }

postcurl:

/**
     * 请求接口方法
     * @param $url
     * @param null $data
     * @return mixed
     */
    function postcurl($url,$data = null){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return 	$output=json_decode($output,true);
    }

 

你可能感兴趣的:(微信公众号,微信开发之公众号)