PHP 5.6 微信上傳臨時素材的坑



/*
* * 上傳素材 */ function add_material($url){ $access_token = wx_access_token(); $wx_url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={$access_token}&type=image" $real_path = "{$_SERVER['DOCUMENT_ROOT']}{$url}"; $result = http_post($wx_url, $real_path); $arr = json_decode($result,true); return $arr; } /** * 獲取access_token */ function wx_access_token(){ $config=C('WEIXINPAY_CONFIG'); $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$config['APPID'].'&secret='.$config['APPSECRET']; $result = json_decode(wx_curl($url),true); return $result['access_token']; }
function http_post($url ='' , $fileurl = '' )
{
    $curl = curl_init();
    if(class_exists('\CURLFile')){
        curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, true); 
        $data = array('media' => new \CURLFile($fileurl));
    }else{
        if (defined ( 'CURLOPT_SAFE_UPLOAD' )) {  
            curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false );  
        }  
        $data = array('media' => '@' . realpath($fileurl));
    }
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

以上是我的完整代碼。

先說說我的環境吧,phg5.6+apache2.4

  1. 圖片上傳一定要用本地的絕對路徑 例 curl -F media=@C:/Users/Administrator/Desktop/phpStudy/WWW/項目名稱/Upload/qrcode/2017-10-08/657d112ce5b2e4c02699faa4b369c6ee.png
  2. 微信access_token使用時長7200秒 (我這里偷懶沒有設置,不過你們要注意哦)
  3. PHP版本問題 5.6和5.6以上的版本 在curl內要設置 
    curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, true); $data = array('media' => new \CURLFile($fileurl));
  4. PHP5.5及以下版本
    if (defined ( 'CURLOPT_SAFE_UPLOAD' )) {  
          curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false );  
    }  
    $data = array('media' => '@' . realpath($fileurl));
  5. CURLOPT_SSL_VERIFYPEER:是否檢測服務器的證書是否由正規瀏覽器認證過的授權CA頒發的。
     
  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM