公众号自定义菜单开发(二)

上一篇:公众号自定义菜单开发(一)

在这个页面已经处理结束后,我首先开始了点击修改菜单的功能,这里其实没有什么,动态效果你把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.最后:保存上传的素材以及修改的菜单信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值