# 基础功能

公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。

# 获取素材总数

图片和图文消息素材(包括单图文和多图文)的总数上限为5000,其他素材的总数上限为1000

$result = WeChat::instance('material')->total();

返回说明

{
 "voice_count":COUNT,
 "video_count":COUNT,
 "image_count":COUNT,
 "news_count":COUNT
}

# 获取素材列表

$param = [
            //素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)
            "type"   => 'image',
            //从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
            "offset" => 0,
            //返回素材的数量,取值在1到20之间
            "count"  => 10
];
$result =(new WeChat())->instance('material')->lists($param);

# 临时素材

对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源,可以查看 官方文档 了解相关信息。

# 大小限制

  • 图片(image): 1M,支持JPG格式
  • 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
  • 视频(video):10MB,支持MP4格式
  • 缩略图(thumb):64KB,支持JPG格式

# 新增素材

临时素材微信官网保存3天,第一个参数为类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)等,第二个参数为上传的文件。

$media =  WeChat::instance('material')->addMedia('image', '1.png');

# 下载素材

//上传图片素材
$result = WeChat::instance('material')->upload('image', '1.png');
//获取临时素材
WeChat::instance('material')->getMedia($result['media_id']);

# 永久素材

  1. 新增的永久素材也可以在公众平台官网素材管理模块中看到
  2. 永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000,其他类型为1000

# 新增素材

除图文消息类型以外的素材,如图片、音频等。

$result = WeChat::instance('material')->addMaterial('image', '1.png');

# 获取素材

//$media_id 为使用新增永久素材上传的素材media_id
$result = WeChat::instance('material')->getMaterial($media_id);

# 删除素材

//$media_id 为素材media_id
$result = WeChat::instance('material')->delMaterial($media_id);

# 图文素材

图文素材属于永久类型的素材,上传后可以在微信管理后台查看到。

# 新增图片素材

/上传永久素材
$instance = WeChat::instance('material');
$material = $instance->addMaterial('image', 'tests/images/user.jpg');

# 新增图文素材

$articles = [
	'articles' => [
		[
                    'title'              => '后盾人',
                    //图文消息的封面图片素材id(必须是永久消息的mediaID)
                    'thumb_media_id'     => $material['media_id'],
                    //作者
                    'author'             => '后盾网',
                    //图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空
                    'digest'             => '摘要信息...',
                    //1 显示封面 0 不显示
                    'show_cover_pic'     => 1,
                    //图文内容,必须少于2万字符
                    'content'            => '图文内容...',
                    //图文消息的原文地址,即点击“阅读原文”后的URL
                    'content_source_url' => 'http://houdunwang.com',
                ],
		],
];
//添加图文,返回为新增的图文消息素材的media_id。
$instance = WeChat::instance('material');
$result   = $instance->addNews($articles);
//上传成功的图文消息media_id,可用于群发消息使用
echo $result['media_id'];

# 修改图文素材

$article = [
            //要修改的图文消息的id
            "media_id" => 'xxxxx',
            //要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0
            "index"    => 0,
            'articles' =>[
                    'title'              => '后盾网',
                    //图文消息的封面图片素材id(必须是永久mediaID)
                    'thumb_media_id'     => $data['media_id'],
                    //作者
                    'author'             => '后盾网',
                    //图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空
                    'digest'             => '摘要信息...',
                    //1 显示封面 0 不显示
                    'show_cover_pic'     => 1,
                    //图文内容,必须少于2万字符
                    'content'            => '图文内容...',
                    //图文消息的原文地址,即点击“阅读原文”后的URL
                    'content_source_url' => 'http://houdunwang.com'
                ]
];
$result = (new WeChat())->instance('material')->editNews($article);

返回值

[
  "errcode": 9001034,//错误号 成功时为0
  "errmsg": '错误提示信息'
]

# 上传图文图片

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

$instance = WeChat::instance('material');
$material = $instance->addNewsImage('tests/images/user.jpg');
echo $material['url'];