前台代码
//点击选择
$('.info_head').on('click',function () {
serverIds = '';
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
uploadImages(localIds)
}
});
})
//上传图片
function uploadImages(localIds) {
var localId = localIds.pop();
wx.uploadImage({
localId: localId,
isShowProgressTips: 1,
success: function (res) {
serverIds += res.serverId + ',';
if(localIds.length > 0){
uploadImages(localIds);
}else{
$.ajax({
url:"{:url('Common/upload_wx_pic')}",
type:"POST",
data:{media:serverIds},
success:function (data) {
if(data.code == 1){
$('#petavatar').attr('src',data.data.httpimgurls);
avatar = data.data.imgurls;
}
}
});
}
},
});
}
后台代码
/**
* 微信上传图片
*/
public function upload_wx_pic(){
$access_token = $this->getAccessToken();
$img_str = $this->request->param('media','','string');
$img_arr = explode(',',rtrim($img_str,','));
$foldername = 'petavatar/'.date('Ymd');
$imgurls = '';
foreach($img_arr as $v) {
$url = $this->getmedia($access_token,$v,$foldername);
$imgurls .= ','. $url;
}
$data['imgurls'] = ltrim($imgurls,',');
$data['httpimgurls'] = cmf_get_image_preview_url($data['imgurls']);
$this->apiResponse(1,'上传成功',$data);
}
/**
* 根据media_id下载微信图片
* @param $access_token
* @param $media_id
* @param $foldername
* @return string
*/
private function getmedia($access_token,$media_id,$foldername){
$url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$media_id;
if (!file_exists("./upload/".$foldername)) {
mkdir("./upload/".$foldername, 0777, true);
}
$file_name=date('YmdHis').rand(1000,9999).'.jpg';
$targetName = './upload/'.$foldername.'/'.$file_name;
$saveName = $foldername.'/'.$file_name;
$ch = curl_init($url); // 初始化
$fp = fopen($targetName, 'wb'); // 打开写入
curl_setopt($ch, CURLOPT_FILE, $fp); // 设置输出文件的位置,值是一个资源类型
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
return $saveName;
}