PHP常用函数之base64图片上传功能详解
本文实例讲述了PHP常用函数之base64图片上传功能。分享给大家供大家参考,具体如下:
HTML页面代码:
$('#articleImgBtn').change(function(){ run(this,function(data){ uploadImage(data); }); }); functionrun(input_file,get_data){ /*input_file:文件按钮对象*/ /*get_data:转换成功后执行的方法*/ if(typeof(FileReader)==='undefined'){ alert("抱歉,你的浏览器不支持FileReader,不能将图片转换为Base64,请使用现代浏览器操作!"); }else{ try{ /*图片转Base64核心代码*/ varfile=input_file.files[0]; //这里我们判断下类型如果不是图片就返回去掉就可以上传任意文件 if(!/image\/\w+/.test(file.type)){ alert("请确保文件为图像类型"); returnfalse; } varreader=newFileReader(); reader.onload=function(){ get_data(this.result); } reader.readAsDataURL(file); }catch(e){ alert('图片转Base64出错啦!'+e.toString()) } } } functionuploadImage(img){ //判断是否有选择上传文件 varimgPath=$("#articleImgBtn").val(); if(imgPath==""){ alert("请选择上传图片!"); return; } //判断上传文件的后缀名 varstrExtension=imgPath.substr(imgPath.lastIndexOf('.')+1); if(strExtension!='jpg'&&strExtension!='gif' &&strExtension!='png'&&strExtension!='bmp'){ alert("请选择图片文件"); return; } $.ajax({ type:"POST", url:'http://localhost/123.php', //data:{file:img.substr(img.indexOf(',')+1)},//视情况将base64的前面字符串data:image/png;base64,删除 data:{file:img},//视情况将base64的前面字符串data:image/png;base64,删除 cache:false, success:function(data){ varreturn_info=JSON.parse(data); if(return_info.status){ $("#articleImg").attr('src',return_info.path); alert("上传成功"); }else{ alert(return_infoerr_info); } }, error:function(XMLHttpRequest,textStatus,errorThrown){ alert("上传失败,请检查网络后重试"); } }); } 
PHP处理代码:
functionupload_image($file_data){
$upload_result=array('status'=>true,'msg'=>'','err_info'=>'');
if(preg_match('/^(data:\s*image\/(\w+);base64,)/',$file_data,$result)){
//处理base64字符串
$img_base64=str_replace($result[1],'',$file_data);
$img_base64=str_replace('=','',$img_base64);
$source_img=base64_decode($img_base64);
//判断文件大小
$file_size=
//上传目录
$basedir='./img_test';
//后缀
$img_suffix=$result[2];//文件后缀
//文件名
//$filename=uniqid();//文件名
$filename=date('YmdHis',time());//文件名
//文件完整路径
$filepath=$basedir."/".$filename.".".$img_suffix;
//目录若果不存在,则创建目录
if(!is_dir($basedir)){
mkdir($basedir);
chmod($basedir,0777);
}
//上传文件
try{
file_put_contents($filepath,$img_base64);
$filepath=substr($filepath,1);
$upload_result=array('status'=>true,'msg'=>'上传成功','err_info'=>'','path'=>$filepath);
return$upload_result;
}catch(Exception$e){
$upload_result=array('status'=>false,'msg'=>'上传失败','err_info'=>$e->getMessage());
return$upload_result;
}
//if(file_put_contents($filepath,base64_decode(str_replace($result[1],'',$file_data)))){
////$size=getimagesize($filepath);
//$filepath=substr($filepath,1);
////$arr['filepath']=$filepath;
////$arr['size']=$size[3];
//return$filepath;
//}else{
//returnfalse;
//}
}else{
$upload_result=array('status'=>false,'msg'=>'上传失败','err_info'=>'请携带base64字符串的前缀');
return$upload_result;
}
}
$res=upload_image($file_data);
echojson_encode($res);
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP目录操作技巧汇总》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
