微信有图文素材和图片素材,下面通过两个方法,添加素材。、
图文素材,代码如下:
public function news_submit(){
$url=I('post.url');//图片在本地服务器上的路径
$file=realpath('.'. $url);//相对路径->绝对路径
$data1=I('post.');
// print_r($data);
$accessToken=getAccess_token();
include APP_PATH . 'LaneWeChat/lanewechat.php';
$url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";
$data['media']=Curl::addFile($file);
$ret=Curl::callWebServer($url,$data,'post',1,0);
// $this->ajaxReturn($ret);
// exit;
if(isset($ret['media_id'])){
$arr=array(
'title'=>$data1['title'],
"thumb_media_id"=>$ret['media_id'],
"author"=>$data1['author'] ,
"digest"=>$data1['digest'],
"show_cover_pic"=>1,
"content"=>$data1['content'],
"content_source_url"=>$data1['link']
);
$data['articles'][]=$arr;
$data=json_encode($data,JSON_UNESCAPED_UNICODE);
// print_r($data);
// exit;
$url="https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=$accessToken";
$ret=Curl::callWebServer($url,$data,'post',true,false);
// $this->ajaxReturn($ret);
// exit;
if(isset($ret['media_id'])){
$model=M('material');
$mp=getCurrentMp();
$arr=array(
'mpid'=>$mp['id'],
'media_id'=>$ret['media_id'],
'create_time'=>time(),
'path'=>$url,
'url'=>$file,
'link'=>$arr['content_source_url'],
'type'=>'news',
'description'=>"作者:".$arr['author']."描述:".$arr['digest']
);
unset($arr['content_source_url']);
unset($arr['thumb_media_id']);
unset($arr['author']);
unset($arr['digest']);
unset($arr['show_cover_pic']);
// print_r($arr);
// exit;
$ret=$model->add($arr);
if($ret){
$this->ajaxReturn(array('ret'=>true,'msg'=>'上传成功'));
}else{
$this->ajaxReturn(array('ret'=>false,'msg'=>'上传失败'));
}
}
}
}
上传文本素材,需要注意显示在页面上的字段和添加入数据库的字段。
图片素材,代码如下:
public function image_submit(){
$url=I('post.url');//图片在本地服务器上的路径
// dump($url);
// exit;
$file=realpath('.'. $url);//相对路径-》绝对路径
// dump($file);
// exit;
$staus_type=I('post.staus_type');//临时,永久
$accessToken=getAccess_token();
include APP_PATH . 'LaneWeChat/lanewechat.php';
if($staus_type==0){
$url="https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$accessToken&type=image";
}else{
$url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";
}
$data['media']=Curl::addFile($file);
$ret=Curl::callWebServer($url,$data,'post',1,0);
// $this->ajaxReturn($ret);
if(isset($ret['media_id'])){
$model=M('material');
$mp=getCurrentMp();
$arr=array(
'mpid'=>$mp['id'],
'media_id'=>$ret['media_id'],
'create_time'=>time(),
'url'=>$file,
'type'=>'image'
);
$ret=$model->add($arr);
if($ret){
$this->ajaxReturn(array('ret'=>true,'msg'=>'上传成功'));
}else{
$this->ajaxReturn(array('ret'=>false,'msg'=>'上传失败'));
}
}
}
值得注意的是,图片储存的路径,必须要返回到最上层目录,才能构建完整的相对路径,如果不是相对路径,将不会成功。
两个接口是不同的,一个为临时,一个为永久。切记不可胡乱调用,每天接口只能被调用10次左右,超过次数今天就不能使用了。
media_id,是上传成功后返回的一个参数,十分重要。需要特别注意,此后许多方法,都将在此基础上进行使用。