直接看代码
$file_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/test.jpg";//获取图片的路径,这里一定要是绝对路径才可以
$url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=' . $access_token . '&type=image';
if (!file_exists($file_path)) {
die('图片不存在');
}
$post = array("media" => new \CURLFile($file_path));
return json_decode(CURLSend($url, 'post', $post));
至此,已完成永久图片上传,接下来上传永久图文素材
$post = [
'articles' => [
[
'title' => urlencode('测试' . date('Y-m-d H:i:s', time())),
'thumb_media_id' => $value->img_sucai->media_id,//用上面我们已上传的图片素材id
'author' => urlencode('测试'),
'digest' => urlencode('测试'),
'show_cover_pic' => 1,
'content' => urlencode("测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试<img src='" . $value->img_sucai->url . "' />测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试"),
'content_source_url' => 'http://www.baidu.com',
],
],
];
$url = 'https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=' . $access_token;
return json_decode(CURLSend($url, 'post', urldecode(json_encode($post))));
至此,完成永久图文素材上传,接下来群发我们已上传的图文素材消息
因为我这是测试公众号,不能群发,只能预览,所以下面是预览接口
$post = [
"touser" => $v,//预览用户的openid,测试号限制比较多,只能指定用户
'mpnews' => [
'media_id' => $value->sucai->media_id,//我们已上传的图文素材id
],
'msgtype' => 'mpnews',
];
$url = 'https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=' . $access_token;
return json_decode(CURLSend($url, 'post', json_encode($post)));
这里附上curl方法
function CURLSend($url, $method = 'get', $data = '') {
$headers = array('charset=utf-8');
$ch = curl_init(); //初始化
// //设置URL和相应的选项
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_URL, $url); //指定请求的URL
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); //提交方式
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //不验证SSL
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //不验证SSL
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //设置HTTP头字段的数组
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;MSIE 5.01;Windows NT 5.0)'); //头的字符串
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); //自动设置header中的Referer:信息
if ($method == 'post' && !empty($data)) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
} //提交数值
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //是否输出到屏幕上,true不直接输出
$temp = curl_exec($ch); //执行并获取结果
curl_close($ch);
return $temp; //return 返回值json字符串
}
至此,已全部完成