微信开发中的素材管理(新增临时、永久图片,新增永久图文)

1.新增临时素材:

公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、

媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。通过本接口,公

号可以新增临时素材(即上传临时多媒体文件)。

注意点:

1、临时素材media_id是可复用的。

2、媒体文件在微信后台保存时间为3天,即3天后media_id失效。

3、上传临时素材的格式、大小限制与公众平台官网一致。

图片(image): 2M,支持PNG\JPEG\JPG\GIF格式

语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式

视频(video):10MB,支持MP4格式

缩略图(thumb):64KB,支持JPG格式

4、需使用https调用本接口。

接口调用说明:
http请求方式:POST/FORM,使用https
https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
2.新增永久素材:

对于常用的素材,开发者可通过本接口上传到微信服务器,永久使用。新增的永久素材也可以在公众平台官网素材

管理模块中查询管理。

请注意:

1、最近更新:永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽)。

2、公众号的素材库保存总数量有上限:图文消息素材、图片素材上限为5000,其他类型为1000。

3、素材的格式大小等要求与公众平台官网一致:

图片(image): 2M,支持bmp/png/jpeg/jpg/gif格式

语音(voice):2M,播放长度不超过60s,mp3/wma/wav/amr格式

视频(video):10MB,支持MP4格式

缩略图(thumb):64KB,支持JPG格式

4、图文消息的具体内容中,微信后台将过滤外部的图片链接,图片url需通过"上传图文消息内的图片获取URL"接口上传图片获取。

5、"上传图文消息内的图片获取URL"接口所上传的图片,不占用公众号的素材库中图片数量的5000个的限制,图片仅支持jpg/png格式,大小必须在1MB以下。

6、图文消息支持正文中插入自己帐号和其他公众号已群发文章链接的能力。

接口调用说明:
http请求方式: POST,https协议
https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN
返回说明
{
   "media_id":MEDIA_ID
}

返回图文消息内的图片获取URL

本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制。图片仅支持jpg/png格式,大小必须在1MB以下。

接口调用请求说明

http请求方式: POST,https协议
https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
调用示例(使用curl命令,用FORM表单方式上传一个图片):

返回说明 正常情况下的返回结果为:

{

"url":  "http://mmbiz.qpic.cn/mmbiz/gLO17UPS6FS2xsypf378iaNhWacZ1G1UplZYWEYfwvuU6Ont96b1roYs CNFwaRrSaKTPCUdBK9DgEHicsKwWCBRQ/0"

}

解说:

图片上传到服务器:首先获取到正在使用的公众号mp_id,图片在本地服务器上的路径(相对路径)转换为绝对路径,获取access_token,从数据表中获取到status_type判断临时还是永久,如果为0为临时素材,如果为1为永久素材。用isset判断是否存在media_id存在则将图片添加到数据表。

 //图片上传公众号服务器
	public function image_submit(){
		//获取正在使用的公众号
		$mp = $this->mp;
		//图片在本地服务器上的路径
		$url = I('post.url');
		//相对路径->绝对路径
		$file = realpath('.'.$url);
		// echo $file;
		// exit;
		$status_type = I('post.status_type');//临时,永久

		$accessToken = getAccess_token();//获取access_token
		include APP_PATH.'LaneWeChat/lanewechat.php';

		if($status_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',true,false);
        
        //写入数据库
        if(isset($ret['media_id'])){
        	$mp = $this->mp;
        	$data['mpid'] = $mp['id'];
        	$data['type'] = 'image';
        	$data['url'] = $url;
        	$data['media_id'] = $ret['media_id'];
        	$data['create_time'] = time();
        	M('material')->add($data);
        	$this->ajaxReturn(array('msg'=>'上传成功'));
        }else{
            $this->ajaxReturn($ret);
        }
		

	}

上传图文消息到公众号服务器解说:

同上传图片到公众号服务器相同首先获取到正在使用的公众号mp_id,图片在本地服务器上的路径(相对路径)转换为绝对路径,获取access_token,不同的是要另外获取填写的标题,内容,链接。上传的图文消息为永久素材所以不用判断。直接用用isset判断是否存在media_id存在则将图片添加到数据表。

//上传图文消息到公众号服务器
	public function news_submit(){
		//获取正在使用的公众号
		$mp = $this->mp;
		//图片在本地服务器上的路径
		$url = I('post.url');
		//相对路径->绝对路径
		$file = realpath('.'.$url);
		// echo $file;
		// exit;
		$title = I('post.title');//标题
		$content = I('post.content');//内容
		$link = I('post.link');//链接


		$accessToken = getAccess_token();//获取access_token
		include APP_PATH.'LaneWeChat/lanewechat.php';

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

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

		 //写入数据库
        if(isset($ret['media_id'])){
        	$arr = array(
        		'title' => $title,
        		'type' => 'image',
        		'url' => $url,
        		'thumb_media_id' =>$ret['media_id'],
        		'author' => 'yxy',
        		'digest' => 'bbbbb',
        		'show_cover_pic' => 1,
        		'content' => $content,
        		'create_time' => time(),
        		'content_source_url' => $link,
        		'media_id' => $ret['media_id'],
        	);

        	$data['articles'][] = $arr;
        	$data = json_encode($data,JSON_UNESCAPED_UNICODE);
        	$api = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=$accessToken";
        	$ret = Curl::callWebServer($api,$data,'post',true,false);

        	if(isset($ret['media_id'])){
        		$mp = $this->mp;
        		$arr['mpid'] = $mp['id'];
        		// print_r($arr);
        		// exit;
        		M('material')->add($arr);	
        	    // $this->ajaxReturn(array('msg'=>'上传成功'));
        	}   	
        	$this->ajaxReturn($ret);
        }else{
            $this->ajaxReturn($ret);
        }

	}






猜你喜欢

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