微信开发上传图文消息内的图片,报错41005 缺少多媒体文件数据?

这是添加素材的方法

    function addMaterial() {
        $file_info = array(
                'name'=>'media',
                'filename' => '/Public/qf1.png', //图片相对于网站根目录的路径
                'content-type' => 'image/png', //文件类型
                'filelength' => '480' //图文大小
        );
        $access_token = $this->getWxAccessToken();    
        $url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$access_token."&type=image";
        $real_path = "{$_SERVER['DOCUMENT_ROOT']}{$file_info['filename']}";
        $data = array("media" => "@{$real_path}", 'form-data' => $file_info);
        $postJson=json_encode( $data );
        $res = $this->https_request( $url ,'post', 'json',$postJson);
        dump($res); 
    }

 

说明:
1.上面url后面type的组装,我看官网没有,然后网上找的,有人说加上类型,可是也没用。
返回报错信息
2.file_info里的 'name'=>'media',也是看别人说的要加上,但是也没用

报错信息如下

array(2) {
  ["errcode"] => int(41005)
  ["errmsg"] => string(41) "media data missing hint: [cjkOBa0678e298]"
}

请问哪里出了问题了?网上看到有个说法,说是和PHP版本有关系?

 

附1:调用接口的方法

    function https_request($url,$type="get",$res="json",$data = ''){
        //1.初始化curl
        $curl = curl_init();
        //2.设置curl的参数
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,2);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        if ($type == "post"){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        //3.采集
        $output = curl_exec($curl);
        //4.关闭
        curl_close($curl);
        if ($res == 'json') {
            return json_decode($output,true);
        }
    }    

说明:curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,2);//我这边设置成false或者0会不起作用...

 

附2:获得微信的access_token

    function getWxAccessToken(){
        if ( $_SESSION['access_token'] && $_SESSION['expire_time'] > time() ) {
            //未过期
            return $_SESSION['access_token'];
        }else {
            $appid        = "我的id";
            $appsecret = "我的appsecret ";
            $url          = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
            $res =$this->https_request($url,'get','json');
            $access_token = $res["access_token"];
            //将重新获取到的access_token存到session里
            $_SESSION['access_token']=$access_token;
            $_SESSION['expire_time']=time()+7200;
            return $access_token; 
        }
    }

转载于:https://my.oschina.net/u/3009407/blog/780212

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值