微信公众号开发之上传临时素材

公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。通过本接口,公众号可以新增临时素材(即上传临时多媒体文件)。使用接口过程中有任何问题,可以前往微信开放社区 #公众号 专区发帖交流

注意点:

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

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

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

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

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

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

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

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

//上传图片素材
public function temporaryUploadFile(){
    $accesstoken = $this->getAccessToken();
	$url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={$accesstoken}&type=image";//type是媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
	$filename = realpath('./images/sc.jpg');//用来将参数相对路径转换成绝对路径
	$result = $this->httpPost($url, $filename);
	var_dump($result);
}
	
//获取access_token
public function getAccessToken(){
    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxeb45193460dc7d0e&secret=c72d84e0e7c8ac9681c865e1bfa4e017';
	$result = json_decode($this->curlGet($url), true);
	return $result['access_token'];
}
	
//上传素材图片的curl
public function httpPost($url, $data){
    $ch = curl_init();
	if (class_exists('\CURLFile')) {
	    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
	    $data = array('media' => new \CURLFile($data));//>=5.5
	} else {
	    if (defined('CURLOPT_SAFE_UPLOAD')) {
	        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
	    }
	    $data = array('media' => '@' . realpath($data));//<=5.5
	}
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_USERAGENT, "TEST");
	$result = curl_exec($ch);
	curl_close($ch);
	return json_encode($result, true);
}
	

上面的程序是上传图片的,type分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)等参数可以选择不同的参数上传所需要的素材。


版权声明:本文为qq_42402086原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。