PHP调用微信JS-SDK接口上传头像保存到服务器

   通过调用微信的接口 chooseImage 获取拍照或从手机相册中选图,接下又通过 uploadImage 接口获得了上传图片的服务器端ID media_id,然后根据media_id 从微信服务器下载保存到本地服务器。

附  微信JS-SDK开发文档

获取临时素材

公众号可以使用本接口获取临时素材(即下载临时的多媒体文件)。请注意,视频文件不支持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		
	);
}

下载源代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值