微信公众号素材管理文档:官方文档
看到新增临时素材时,官方方式:
http请求方式:POST/FORM,使用https
https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):
curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"
一般开发都是通过curl来模拟form表单post数据
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
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);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//CURLOPT_POSTFIELDS
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
//其中的数据$data,这点会有点坑,需要说明下,
根据php.net官方文档上面,选项 CURLOPT_POSTFILEDS 原先可以通过“@”.$filename,来上传文件。从PHP 5.5.0开始这种方法就废弃了,必须采用CURLFILE类来上传文件
$obj = new CurlFile($imgUrl);
$obj->setMimeType("image/jpeg");
$post['media'] = $obj;
$data=$post;//需要先通过这个CurlFile封装一下
来源:CSDN
作者:yegm
链接:https://blog.csdn.net/yegaomin/article/details/80118331