前瞻:
在我调用群发接口的时候,遇到了上传图片的问题,如下:
那么如何实现呢?直接上代码,调用即可:
public function send(){
//$access_token为获取的token,下面有函数
$url="http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={$access_token}&type=image";
$arr = array('media'=>'@'.$_SERVER['DOCUMENT_ROOT'].$v['pic_url'],'form-data'=>$v['pic_url']);
//看下面的函数
$res = $this->http_curl($url,'post','',$arr);
}
用到的函数
/**
*
*$url 接口url string
*$type 请求类型 string
*$res 返回数据类型 string
*$arr post请求参数 array
*
*/
public function http_curl($url,$type='get',$res='json',$arr=''){
//1.初始化curl
$ch = curl_init();
//2.设置curl的参数
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
if($type == 'post'){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
}
//3.采集
$output = curl_exec($ch);
//4.关闭
curl_close($ch);
if($res == 'json'){
if( curl_error($ch) ){
return curl_error($ch);//请求失败返回错误信息
}else{
return json_decode($output,true);//请求成功返回json
}
}else{
if( curl_error($ch) ){
return curl_error($ch);//请求失败返回错误信息
}else{
return json_decode($output,true);//请求成功返回json
}
}
}
/**
*
*获取全局access_token
* @return $access_token string
*/
function getWxAccessToken(){
//将access_token存在session中
if( $_SESSION['access_token'] && $_SESSION['expire_time']>time() ){
return $_SESSION['access_token'];
}else{
$this->conf = M('Wechat')->find(1);
//如果access_token不存在或者过期,重新获取
$appid = $this->conf['appid'];
$appsecret = $this->conf['appsecret'];
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
$res = $this->http_curl($url);
$access_token = $res['access_token'];
//将获取到的access_token存到session
$_SESSION['access_token'] = $access_token;
$_SESSION['expire_time'] = time()+7000;//access_token过期时间为2小时,所以把session过期时间也修改过来
return $access_token;
}
}