通过调用微信的接口 chooseImage 获取拍照或从手机相册中选图,接下又通过 uploadImage 接口获得了上传图片的服务器端ID media_id,然后根据media_id 从微信服务器下载保存到本地服务器。
获取临时素材
公众号可以使用本接口获取临时素材(即下载临时的多媒体文件)。请注意,视频文件不支持https下载,调用该接口需http协议。本接口即为原“下载多媒体文件”接口。
接口调用请求说明
http请求方式: GET,https调用
https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
请求示例(示例为通过curl命令获取多媒体文件)
curl -I -G "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"
参数说明
参数 | 是否必须 | 说明 |
access_token | 是 | 调用接口凭证 |
media_id | 是 | 媒体文件ID |
define('AppID','你的AppID');
define('AppSecret','你的AppSecret');
$access_token=get_token();
$media_id=$_REQUEST['media_id'];
$url ="https://api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$media_id;
//图片存放的路径
$data_time =date('Y-m-d',time());
$path ="uploads/picture/".$data_time."/";
if(!file_exists($path)){
mkdir($path,0777,true); //创建目录
chmod($path,0777); //赋予权限
}
//确保图片名唯一,防止重名产生覆盖
$uniName ='wx_'.time().rand(1000,9000).'.jpg';
$res =getImage($url,$path,$uniName);
die(json_encode($res));
//获取access_token
function get_token(){
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".AppID."&secret=".AppSecret;
$data = json_decode(file_get_contents($url),true);
if($data['access_token']){
return $data['access_token'];
}else{
echo "Error";
exit();
}
}
//下载远程文件到本地
function getImage($url,$save_dir='',$filename='')
{
//根据url获取远程文件
$curl =curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_TIMEOUT,500);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($curl,CURLOPT_URL,$url);
$res =curl_exec($curl);
curl_close($curl);
//把图片保存到指定目录下的指定文件
file_put_contents($save_dir.$filename,$res);
return array(
'file_name' =>$filename,
'save_path'=>$save_dir.$filename,
'error' =>0
);
}
下载源代码