php接收base64并转存为图片保存到服务器
直接上代码
$base64 = @$_REQUEST['base64'];
if(!$base64) {
exit;
}
// 创建要储存到的文件
$saveChildFolder = date('Y') . '/' . date('m');
$saveFolder = "....../cards/{$saveChildFolder}";
$saveUrl = "....../cards/{$saveChildFolder}";
$res = base64Toimage($base64, $saveFolder, $saveUrl);
if($res['success']) {
exit('ok')
} else {
exit('error')
}
/**
* $base64_image_content 图片的base64
* $saveFolder 要储存图片的目录
* $saveUrl 要储存图片的目录的访问地址
*/
function base64Toimage(
$base64_image_content,
$saveFolder,
$saveUrl
){
if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
$type = $result[2];
// 如果目录不存在 就创建
if (!file_exists($saveFolder)) {
// 0777可读可写可执行 true最高权限
mkdir($saveFolder, 0777, true);
// 改变他的权限
chmod($saveFolder, 0777);
}
// 生成的文件名
$uniName = md5(uniqid(microtime(true), true)). '.' . $type;
// 文件的存储
$new_file = "{$saveFolder}/{$uniName}";
$new_file_url = "{$saveUrl}/{$uniName}";
// 成功后返回的图片url
if (@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
return [
'success' => true,
'path' => $new_file,
'url' => $new_file_url
];
}else{
return [
'success' => false
];
}
}else{
return [
'success' => false
];
}
}