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;
具體實現代碼如下
-
/* 上傳多媒體文件 */
-
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;
-
}
-
-
}
-