微信开发中多图文上传后台怎么写?

1.编写添加图文方法addnews,将图文添加到数据库中

用post方式获取到data的值,用foreach遍历数组,如果键为0则把数据(mpid,title,create_time)添加到数据表media_news中,根据数据表media_news_list与表media_news的关联(news_id)再将数据添加到数据表media_news_list中,数据添加成功返回'error'=>0,'msg'=>'数据添加成功'。

public function addnews(){		
		if(IS_GET){
			$this->display();
		}else{
			$mp = $this->mp;
			$data = I('post.data');
	        // print_r($data);
	        // exit;

	        //先添加数据到数据表rh_media_news
	        foreach($data as $key => $value){
	        	$arr = array();
				$arr['mpid'] = $mp['id'];
				$arr['title'] = $value['title'];
				$arr['create_time'] = time();	        
		        // print_r($arr);
		        // exit;	        
		        // $ret = M('media_news')->add($arr);
		        if($key == 0){
		        	$ret = M('media_news')->add($arr);  	
		        }
		        $value['news_id'] = $ret;
				M('media_news_list')->add($value);              
	        }
	        // print_r($value);
	        // exit;
			$this->ajaxReturn(array('error'=>0,'msg'=>'数据添加成功'));	
	    }
    }


2.编写图片上传方法uploadimg

首先获取到access_token,引入文件LaneWeChat/lanewechat.php。图文群发上传的图片应是永久图片,所以接口调用如下:

上传成功返回{“media_id”:MEDIA_ID}

 
 

http请求方式: POST,https协议

https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE
调用示例(使用curl命令,用FORM表单方式新增一个其他类型的永久素材,curl命令的使用请自行查阅资料
private function uploadimg($url){
    	$accessToken = getAccess_token();//获取access_token
		include APP_PATH.'LaneWeChat/lanewechat.php';

		//上传永久
		$api = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";

        $file = realpath('.'.$url);
		$data['media'] = Curl::addFile($file);
		$ret = Curl::callWebServer($api,$data,'post',true,false);	
		// $this->ajaxReturn($ret);
		// exit;

		//上传成功
		if(isset($ret['media_id'])){
			return array('media_id'=>$ret['media_id']);
		}else{
			return '本地图片上传公众平台失败'.json_encode($ret);
		}
    }

3.编写图文上传到公众平台方法uploadMediaNews

首先第一步得到news_id,第二步检查数据库中是否存在,第三步foreach遍历数组判断media_id是否为空,上传图片,将获取到的(thumb_media_id,author,title,content_source_url,content,digest,show_cover_pic)数据添加到数据表media_news_list中,引入文件include APP_PATH.'LaneWeChat/lanewechat.php';

$ret = \LaneWeChat\Core\AdvancedBroadcast::uploadNews($data);

判断存在url上传数据(media_id,status_type)到数据表media_news中成功返回上传成功,失败返回json串。

public function uploadMediaNews($news_id){

    	//得到news_id
    	$where['news_id'] = $news_id;
    	//第二步:查库
    	$data = M('media_news_list') ->field('id,thumb_media_id,cover')->where("news_id=$news_id")->select();
    	// print_r($data);
    	// exit;
    	foreach($data as $key =>$value){
    		//判断media_id为空
    		if(isset($value['thumb_media_id'])){
    			//图片上传
    			$ret = $this->uploadimg($value['cover']);

    			if(is_array($ret)){
    				M('media_news_list')->where("id = {$value['id']}")->setField('thumb_media_id',$ret['media_id']);
    			}else{
    				echo $ret;
    				exit;
    			}
    		}
    	}

    	$data = M('media_news_list')->field('thumb_media_id,author,title,content_source_url,content,digest,show_cover_pic')->where($where)->order('id')->select();
    	// print_r($data);
    	// exit;
        
        include APP_PATH.'LaneWeChat/lanewechat.php';
		$ret = \LaneWeChat\Core\AdvancedBroadcast::uploadNews($data);	
		// $this->ajaxReturn($ret);
		// exit;

		//上传成功
		if(isset($ret)){
			$arr['media_id'] = $ret['media_id'];
			$arr['status_type'] = 1;
			M('media_news')->where($where)->save($arr);
			echo "上传成功";
		}else{
			echo '上传失败,'.json_encode($ret);
		}

    }

猜你喜欢

转载自blog.csdn.net/yxy9806/article/details/80091223