$bases = $_POST['img']; //图片流
$bases_size = $_POST['size'] ? $_POST['size'] : 2; //图片大小,可动态限制,默认为2M
$base64_image = str_replace(' ', '+', $bases);
//post方式接收的数据, 加号会被替换为空格, 需要重新替换回来, 若不是post数据, 不需要执行
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image, $result)){
//判断图片后缀
$pic_ars = array('jpg','jpeg','png');
if(!in_array($result[2],$pic_ars)){
exit(json_encode(array('status'=>0,'message'=>'文件格式有误')));
}else{
//定义文件名称
$picname = uniqid(); //这里会重复上传图片,如果不允许的话,可以给定特殊文件名称来判断,比如用户名
$picdir=$picname.'.'.$result[2];
}
//判断大小
$size_format = ceil((strlen($bases) - ((strlen($bases)/8)*2))/1024);
if($size_format > $bases_size*1024){
exit(json_encode(array('status'=>0,'message'=>'图片大小不能超过2M')));
}
//定义图片储存文件目录
$dir = $_SERVER['DOCUMENT_ROOT'] . "/upload/".date('ymd');
if (!is_dir($dir)){
//如果不存在就创建该目录
mkdir($dir,0777,true);
}
//图片名称
$image_url = $dir.'/'.$picdir;
//储存图片
$img_url = '';//图片路径
if (file_put_contents($image_url, base64_decode(str_replace($result[1], '', $base64_image)))){
$img_url = $_SERVER['SERVER_ADDR']."/upload/".$picdir;
}
exit($img_url);
}
前端传来base64码的图片,php怎么处理?
猜你喜欢
转载自blog.csdn.net/qq_36431166/article/details/100099028
今日推荐
周排行