在这个页面已经处理结束后,我首先开始了点击修改菜单的功能,这里其实没有什么,动态效果你把menu.js稍作修改就好,唯一的就是要处理好每一级菜单操作以及菜单的类型变换,这里我就说一下菜单类型修改为图片遇到的问题
1.首先可以根据自己项目中用到的上传文件的功能,实现素材的选中效果
2.接下来就是上传素材,保存素材的事情了,这里着重说一下
微信文档:上传临时素材接口使用方法:
这个例子写的不明所以,按照要求,本人直接ajax提交数据,获取了pictrue的绝对路径,很不幸,结果报的错误为:41005 media data missing,然后搜索教程发现说要使用绝对路径,所以我就这样:
$oMenuInfo = array(
'name' => Input::get('name'),
'type' => Input::get('type'),
'url' => Input::get('url'),
'key' => trim(Input::get('key')),
'content' => Input::get('content'),
'picUrl' => Input::get('picture'),
);
$picUrl = public_path().$oMenuInfo['picUrl'];
提交还是这个41005报错,继续百度,有的说要在文件前加@符号,我所搜文档发现:
文档指出了加@的原因,因为我的版本是5.3以后的,所以使用了CURLFile()类来代替
$picUrl = new CURLFile(public_path().$oMenuInfo['picUrl'],'image/jpg|image/jpeg|image/png');
$res = $this->oWechat->addMedia('image',$picUrl,'temp');
在这里,我顺便允许了图片类型为:jpg,jpeg和png格式
3.文件准备就绪,就是上传素材了
/**
* addMedia():添加素材
* @param $type 上传文件类型
* @param $file 文件路径
* @param $media_type 文件保存类型:forever或temp
* @return string
**/
public function addMedia($type, $file,$media_type='forever'){
//获取token
$access_token = self::getAccessToken();
if($media_type == 'temp'){
$curl = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$access_token.'&type=image';
$data = array(
'media' => $file
);
}else{
$curl='https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.$access_token.'&type='.$type;
$data = array(
'type' => $type,
'media' => $file,
);
}
return self::https_request($curl,$data,true,"post");
}
这是上传素材的两种接口,一者是临时素材,一者是上传永久素材;
4.最后:保存上传的素材以及修改的菜单信息