微信開發上傳圖文消息內的圖片,報錯41005 缺乏多媒體文件數據?

這是添加素材的方法json

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',也是看別人說的要加上,可是也沒用api

報錯信息以下微信

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

請問哪裏出了問題了?網上看到有個說法,說是和PHP版本有關係?session

 

附1:調用接口的方法app

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會不起做用...curl

 

附2:得到微信的access_tokenpost

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; 
        }
    }
相關文章
相關標籤/搜索