微信公眾號開發---上傳臨時素材到公眾號遇到的問題:"errcode":41005,"errmsg":"media data missing


1、上傳臨時素材到公眾號遇到的問題:"errcode":41005,"errmsg":"media data missing

解決辦法:因為php版本的原因,上傳素材一直保錯。 php 的curl的 curl_setopt 函數存在版本差異

php5.5已經把通過@加文件路徑上傳文件的方式給放入到Deprecated中了。php5.6默認是不支持這種方式了

特殊處理1:curl_setopt ( $ch, CURLOPT_SAFE_UPLOAD, false);

特殊處理2:$post_data ['media']  = '@'.$file;

具體實現代碼如下

 

  1.  
    /* 上傳多媒體文件 */
  2.  
    public function uploadFile($file, $type = 'image', $acctoken = '') {
  3.  
    // $post_data ['type'] = $type; // 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb)
  4.  
    $post_data [ 'media'] = '@'.$file;
  5.  
    //$post_data ['media'] =$file;
  6.  
     
  7.  
    $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=$acctoken&type=image";
  8.  
     
  9.  
    $output= $this->http_post_media($url, $post_data);
  10.  
     
  11.  
    return $output;
}
  1.  
    <pre name= "code" class="php"> private function http_post_media($url,$strPOST)
  2.  
    {
  3.  
    $oCurl = curl_init ();
  4.  
    curl_setopt ( $oCurl, CURLOPT_SAFE_UPLOAD, false);
  5.  
    if (stripos ( $url, "https://" ) !== FALSE) {
  6.  
    curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYPEER, FALSE );
  7.  
    curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYHOST, false );
  8.  
    }
  9.  
     
  10.  
    curl_setopt ( $oCurl, CURLOPT_URL, $url );
  11.  
    curl_setopt ( $oCurl, CURLOPT_RETURNTRANSFER, 1 );
  12.  
    curl_setopt ( $oCurl, CURLOPT_POST, true );
  13.  
    curl_setopt ( $oCurl, CURLOPT_POSTFIELDS, $strPOST );
  14.  
    $sContent = curl_exec ( $oCurl );
  15.  
    $aStatus = curl_getinfo ( $oCurl );
  16.  
    curl_close ( $oCurl );
  17.  
    if (intval ( $aStatus ["http_code"] ) == 200) {
  18.  
    return $sContent;
  19.  
    } else {
  20.  
    return false;
  21.  
    }
  22.  
     
  23.  
    }
  24.  


免責聲明!

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



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