上次讲述了一下怎么配置微信公众号, 这次我们来探讨一下用TP3框架来进行微信开发中的新增素材(分为永久素材和临时素材)中可能出现的问题,通过出现的问题我们来加深重要知识点的理解。
首先我们先来讲述一下临时素材的上传思路: 从本地上传图片(如下图代码)
public function upload(){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Uploads/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
// 上传文件
$info = $upload->uploadOne($_FILES['file']);
if(!$info) {// 上传错误提示错误信息
// $this->error();
$this->ajaxReturn(array('code'=>1,'msg'=>$upload->getError()));
}else{// 上传成功
$file='/Uploads/'.$info['savepath'].$info['savename'];
$this->ajaxReturn(array('code'=>0,'msg'=>'上传成功','url'=>$file));
}
}
通过F12监控会返回
再通过单选按钮来选定是哪种素材,若是临时素材即调用http://api.weixin.qq.com/cgi-bin/media/upload?access_token=$accessToken&type=image;永久则调用http://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image;$accessToken就是你当前使用的公众号的access_token,我们假如上传的是临时素材再获取数据后执行返回的结果如下
$data['media']='@'.$file;
$ret=Curl::callWebServer($url,$data,'post',true,false);
dump($ret);exit;
其实在调用借口是应该用HTTPS,那我上面的API借口就错了,小试了一下结果居然跟正确的没多大出入,大家在敲代码时为了严谨还是加上 s! 接下来呢我们就要将得到的重要数据添加到本地数据库,这里的代码就不再重点赘述。
永久素材跟临时素材上传的不同在于返回的数据不同(如下图)
在这里要注意的是永久素材每天调用的次数为10次,超过10次会出现超过最大上限的英文提示,所以在执行代码时要确保你写的是否正确再进行测试,要不然10次机会没了,那你只能等到第二天再测试,对于上班族可不是一个好预兆。之后就是将重要数据添加到数据库了。