微信公众号添加图片

首先我们要创建两个数据库rh_mp_rule、rh_mp_reply_image前者用来存储关键字和正在使用公众号的mp_id以及上传文件的类型;后者用来存储图片的media_id和url路径;两个表之间定义reply_id用来连接

1.在控制器中我们先创建一个upload方法讲图片上传,其代码如下:

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($upload->getError());
			$this->ajaxReturn(array('code'=>1,'msg'=>$upload->getError()));
		}else{
			// $this->success('长传成功!');
			$file='/Uploads/'.$info['savepath'].$info['savename'];
			$this->ajaxReturn(array('code'=>0,'msg'=>'上传成功','url'=>$file));
		}
	}

在前台js中进行相应的修改使图片得以显示。

2.我们要将本地图片上传到微信平台,并且是永久图片接口,其代码如下:

//选择本地图片需上传到微信平台
		if(empty($media_id)){
			$accessToken=getAccess_token();
		    include APP_PATH . "LaneWeChat/lanewechat.php";

			//上传永久图片接口
			$file=realpath('.'.$url);
			// echo $file;
			// exit;
			$api="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";
			$data['media']='@' . $file;
			$ret=Curl::callWebServer($api,$data,'post',1,0);
			// $this->ajaxReturn($ret);
			// exit;

			// 上传成功
			if(isset($ret['media_id'])){
				$media_id=$ret['media_id'];
				$url=$ret['url'];
			}else{
				$ret['fail']='本地图片上传公众平台失败';
				$this->ajaxReturn(array('status'=>1,'msg'=>$ret));
				exit;
			}
		}

接着我们要实现将其相关的数据存入到两个数据库

$data['media_id']=$media_id;
		$data['url']=$url;
		$reply_id=M('mp_reply_image')->add($data);
		$mp=getCurrentMp();
		$arr['mpid']=$mp['id'];
		$arr['reply_id']=$reply_id;
		$arr['type']='image';
		$arr['keyword']=$keyword;
		$ret=M('mp_rule')->add($arr);
		if($ret){
			$this->ajaxReturn(array('status'=>1,'msg'=>'添加成功'));
		}else{
			$this->ajaxReturn(array('status'=>1,'msg'=>'添加失败'));
		}

创建一个replyimage方法将两个代码合起来,就实现了数据库和图片的上传

3.在wechatrequest.lib.php方法中使用switch语句实现图片的关键字回复,其代码如下

 case 'image':
                $reply=M('mp_reply_image')->find($reply_id);

                if($reply){
                    $media_id=$reply['media_id'];
                    return ResponsePassive::image($request['fromusername'],$request['tousername'],$media_id);
                }else{
                     $reply_text='出错啦';
                     return ResponsePassive::text($request['fromusername'],$request['tousername'],$reply_text);
                }
                break;
4.将其对应的数据库及代码传入阿里云平台,在微信公众号进行配置即可



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值