java 微信41005_微信上传素材 {"errcode":41005,"errmsg":"media data missing"} 解决方法和思路...

哎lol 连跪两把  就来写写博客    今天遇到一个问题 ,微信公众号开发上传素材是提示报错   41005    errcode":41005,"errmsg":"media data missing  检查了好几遍 确信都没有问题  看了下接口说明

a2c0b90dbfb1adab77adb5c36a0f5f0d.png

只能说微信文档写的越来越简单  简直不适合我这种小白

治理介绍一下思路  ,就是利用curl  模拟表单提交  江图片上传至微信   @+文件绝对路径,curl 的curl_setopt PHP5.5一下可以,但是5.6就不在支持了  The usage of the @filename API for file uploading is deprecat  所以遇到这种问题就不要太惊讶,php 没有问题,微信也没有问题   有问题的是版本

在组装数据的时候  数据格式应该是这样

e667ed10ce247b1d9bac65b6885a7ab8.png

他吗的微信说的一点也不详细,然后就是模拟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

2b4282494e4b30285b7df978b91e1b71.png

9fe68951026c6c69b9daf4bdcae3ff69.png

还有一些小问题 但是已经能使用了,友情提示  在使用curl 时,千万不要随意拷贝人家的,要去弄明白每个参数的含义 ,以及不同php版本的特性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值