base64传图片 (base64格式)
$avatar1 = Attachment::base64Image($avatar);
protected static $max_size = 2048000;
protected static $extension = ['jpg','jpeg','gif','bmp','png'];
public static function base64Image($stream, $sub_dir='attachment', $auth = null)
{
$server = request()->server();
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $stream,$result)){
$type = $result[2];
if(!in_array($type, self::$extension)){
$auth && $auth->setError('上传文件格式不正确');
return false;
}
$date = date('Ymd', time());
$dir_name = $_SERVER['DOCUMENT_ROOT']."/uploads/$sub_dir/".$date.'/';
if (!file_exists($dir_name)) {
$mk = mkdir($dir_name, 0700, true);
if($mk === false){
$auth && $auth->setError('上传失败,没有权限');
return false;
}
}
$filename = mt_rand(1000,9999) . '_' . uniqid() . ".{$type}";
$new_file = $dir_name . $filename;
$file_stream = base64_decode(str_replace($result[1], '', $stream));
if(strlen($file_stream)/1024 > 4096){
$auth && $auth->setError('文件太大,超过4M');
return false;
}
if(file_put_contents($new_file, base64_decode(str_replace($result[1], '', $stream))) === false) {
$auth && $auth->setError('服务器响应失败');
return false;
}else{
return $server['REQUEST_SCHEME'] . '://' . $server['SERVER_NAME']. "/uploads/$sub_dir/".$date.'/' . $filename;
}
}else{
$auth && $auth->setError('文件检测不合法');
return false;
}
}