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

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

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;
        }

    }