微信公眾號開發---上傳臨時素材到公眾號遇到的問題:"errcode":41005,"errmsg":"media data missing
阿新 • • 發佈:2019-02-14
php5.5已經把通過@加檔案路徑上傳檔案的方式給放入到Deprecated中了。php5.6預設是不支援這種方式了
特殊處理1:curl_setopt ( $ch, CURLOPT_SAFE_UPLOAD, false);
特殊處理2:$post_data ['media'] = '@'.$file;
具體實現程式碼如下
/* 上傳多媒體檔案 */ public function uploadFile($file, $type = 'image', $acctoken = '') { // $post_data ['type'] = $type; // 媒體檔案型別,分別有圖片(image)、語音(voice)、視訊(video)和縮圖(thumb) $post_data ['media'] = '@'.$file; //$post_data ['media'] =$file; $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=$acctoken&type=image"; $output=$this->http_post_media($url, $post_data); return $output;
}
<pre name="code" class="php"> private function http_post_media($url,$strPOST) { $oCurl = curl_init (); curl_setopt ( $oCurl, CURLOPT_SAFE_UPLOAD, false); if (stripos ( $url, "https://" ) !== FALSE) { curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYHOST, false ); } curl_setopt ( $oCurl, CURLOPT_URL, $url ); curl_setopt ( $oCurl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $oCurl, CURLOPT_POST, true ); curl_setopt ( $oCurl, CURLOPT_POSTFIELDS, $strPOST ); $sContent = curl_exec ( $oCurl ); $aStatus = curl_getinfo ( $oCurl ); curl_close ( $oCurl ); if (intval ( $aStatus ["http_code"] ) == 200) { return $sContent; } else { return false; } }