现在有个需求:上传头像,先剪切,最后把剪切的图片上传到服务器,这个时候我只能拿到剪切图片的base64流数据。我要根据这个数据把图片上传到另一台服务器(专门放图片文件的服务器)并且返回图片url,我应该怎么弄???
现在有个需求:上传头像,先剪切,最后把剪切的图片上传到服务器,这个时候我只能拿到剪切图片的base64流数据。我要根据这个数据把图片上传到另一台服务器(专门放图片文件的服务器)并且返回图片url,我应该怎么弄???
/**
* 保存64位编码图片
*/
function saveBase64Image($base64_image_content){
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
//图片后缀
$type = $result[2];
if($type=='jpeg'){
$type='jpg';
}
//保存位置--图片名
$image_name=date('His').str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT).".".$type;
$image_url = 'uploads/image/'.date('Ymd').'/'.$image_name;
if(!is_dir(dirname('./'.$image_url))){
mkdir(dirname('./'.$image_url));
chmod(dirname('./'.$image_url), 0777);
umask($oldumask);
}
//解码
$decode=base64_decode(str_replace($result[1], '', $base64_image_content));
if (file_put_contents('./'.$image_url, $decode)){
$data['code']='0';
$data['imageName']=$image_name;
$data['image_url']=$image_url;
$data['type']=$type;
$data['msg']='保存成功!';
}else{
$data['code']='1';
$data['imgageName']='';
$data['image_url']='';
$data['type']='';
$data['msg']='图片保存失败!';
}
}else{
$data['code']='1';
$data['imgageName']='';
$data['image_url']='';
$data['type']='';
$data['msg']='base64图片格式有误!';
}
return $data;
}
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答776 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.3k 阅读
1 回答695 阅读✓ 已解决
我说一下我的方法
先用 base64_decode()转成 图片,然后file_put_contents()写入文件夹内,然后读取路径下的文件上传到你想上传的服务器,返回url