本文目录 :上传图文素材的图片上传其他素材关键的http表单请求代码小结参考文档前言:我在实现微信公众平台上传素材的时候遇到了许多问题,但最终还是成功实现这一功能,特此在这里做一下总结和记录。文中遇到诸如 ...
本文目录 :
上传图文素材的图片
上传其他素材
关键的http表单请求代码
小结
参考文档
前言:
我在实现微信公众平台上传素材的时候遇到了许多问题,但最终还是成功实现这一功能,特此在这里做一下总结和记录。
文中遇到诸如 getAccessToken() 等关键函数却没有找到实现时,可参考前面的这两篇文章:
1、微信开发之获取用户详细列表
2、微信开发之向用户群发文本消息
1、 上传图文素材的图片
首先选一个简单的接口来做说明例子,这个上传素材的接口在所有上传素材的接口中是参数最简单的,而且还单独享用一个URL, 作为入门例子再合适不过了。
注意,本文主要侧重点是代码层面的实现,而不是微信官方一大堆规则的讲解,如果你有需要此方面的介绍,下面已给出官方链接不谢。
官方文档:
新增永久素材
官方给的这个接口,除了需要惯例的 access_token ,还需要一个文件的参数,一般而言,只需要一个文件路径,其他文件参数通过这个路径获取解析则可,做成一个黑匣子,简单易用。
我知道,有人就是专门找下边的 Requests::request() 的实现的,可在这就没看到实现,别急,下面就有。
publicfunction uploadNewsImage($path)
{
$access_token = $this->getAccessToken();
if(!$access_token){
returnfalse;
}
$path = realpath($path);
$post =['media '=>'@'.$path];
$url ="https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={$access_token}";
$return = $this->requestAndCheck($url,'POST', $post);
if($return ===false){
returnfalse;
}
return $return;
}
/**
* 专门用来检查微信接口返回值的。
* 是的,这个接口比上一两篇文章的接口更加好用。东西一般做多,就知道要抽象了,如果还没有那水平的话。
*/
publicfunction requestAndCheck($url, $method ='GET', $fields =[])
{
$return =Requests::request($url, $method, $fields);
if($return ===false){
$this->setError("request出错! ".Requests::$error);
returnfalse;
}
$wxdata = json_decode($return,true);
if(isset($wxdata['errcode'])&& $wxdata['errcode']!=0){