微信如何以表单形式调用上传接口

前瞻:

在我调用群发接口的时候,遇到了上传图片的问题,如下:


微信如何以表单形式调用上传接口_第1张图片

那么如何实现呢?直接上代码,调用即可:

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;
        }
    }

你可能感兴趣的:(微信如何以表单形式调用上传接口)