前瞻:
在我調用群發接口的時候,遇到了上傳圖片的問題,如下:
那么如何實現呢?直接上代碼,調用即可:
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;
}
}