微信上傳素材 {"errcode":41005,"errmsg":"media data missing"} 解決方法和思路


哎lol 連跪兩把  就來寫寫博客    今天遇到一個問題 ,微信公眾號開發上傳素材是提示報錯   41005    errcode":41005,"errmsg":"media data missing  檢查了好幾遍 確信都沒有問題  看了下接口說明

只能說微信文檔寫的越來越簡單  簡直不適合我這種小白

治理介紹一下思路  ,就是利用curl  模擬表單提交  江圖片上傳至微信   @+文件絕對路徑,curl 的curl_setopt PHP5.5一下可以,但是5.6就不在支持了  The usage of the @filename API for file uploading is deprecat  所以遇到這種問題就不要太驚訝,php 沒有問題,微信也沒有問題   有問題的是版本

在組裝數據的時候  數據格式應該是這樣

他嗎的微信說的一點也不詳細,然后就是模擬curl  上傳   詳細代碼如下

$token ="bwxuV4NU8-c6KyDZu8CiVIkLIle13TzYVw_D2FGswfOz4yW5kvOeVA-1YTE6AC6T0kKI_TYIYllCuTmVmAHMTGyXEjChuP_TwSbHcYAOBlIyNugVYIIeVPFAVvAxmnYWIMTgAHAEIP";
function add_material($file_info,$token){
$url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={$token}&type=image";
$ch1 = curl_init ();
$real_path="{$_SERVER['DOCUMENT_ROOT']}{$file_info['filename']}";
$data= array("media"=>"@{$real_path}",'form-data'=>$file_info);
curl_setopt ( $ch1, CURLOPT_URL, $url );
curl_setopt ( $ch1, CURLOPT_POST, 1 );
curl_setopt ( $ch1, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch1, CURLOPT_CONNECTTIMEOUT, 5 );
curl_setopt ( $ch1, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $ch1, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt ( $ch1, CURLOPT_POSTFIELDS, $data );
$result = curl_exec ( $ch1 );
curl_close ( $ch1 );
return $result;
}
$file_info=array(
'filename'=>'/index.jpg', //圖片相對於網站根目錄的路徑
'content-type'=>'image/png', //文件類型
'filelength'=>'90011' //圖文大小
);
add_material($file_info,$token);
以上在 wamp 環境下清冊有效 注意php 版本是5.5
這一需要說明的是如果上傳失敗 在檢查代碼沒有問題后,應該去檢查不同php版本的curl 重點就是curl_setoptd 參數設置 具體可以參考curl官方說明或者 http://blog.csdn.net/yxwb1253587469/article/details/51777903

 

 

 
        

 還有一些小問題 但是已經能使用了,友情提示  在使用curl 時,千萬不要隨意拷貝人家的,要去弄明白每個參數的含義 ,以及不同php版本的特性

 


免責聲明!

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



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