PHP实现本地图⽚转base64格式并上传
我们在开发系统时,处理图⽚上传是不可避免的,例如使⽤thinkphp的肯定很熟悉import("@.ORG.UploadFile");的上传⽅式,今天我们来讲⼀个使⽤html5 base64上传图⽚的⽅法。
主要是⽤到html5 FileReader的接⼝,既然是html5的,所⽀持的浏览器我就不多说啦
可以⼤概的讲⼀下思路,其实也挺简单。选择了图⽚之后,js会先把已选的图⽚转化为base64格式,然后通过ajax上传到服务器端,服务器端再转化为图⽚,进⾏储存的⼀个过程。
咱们先看看前端的代码。
html部分
<input type="file" id="imagesfile">
php实例代码教程js部分
$("#imagesfile").change(function (){
var file = this.files[0];
//⽤size属性判断⽂件⼤⼩不能超过5M ,前端直接判断的好处,免去服务器的压⼒。
if( file.size > 5*1024*1024 ){
alert( "你上传的⽂件太⼤了!" )
}
//好东西来了
var reader=new FileReader();
// 通过 sult 来访问⽣成的 base64 DataURL
var base64 = sult;
//打印到控制台,按F12查看
console.log(base64);
/
/上传图⽚
base64_uploading(base64);
}
});
//AJAX上传base64
function base64_uploading(base64Data){
$.ajax({
type: 'POST',
url: "上传接⼝路径",
data: {
'base64': base64Data
},
dataType: 'json',
timeout: 50000,
success: function(data){
console.log(data);
},
complete:function() {},
error: function(xhr, type){
alert('上传超时啦,再试试');
}
});
}
其实前端的代码也并不复杂,主要是使⽤了new FileReader();的接⼝来转化图⽚,new FileReader();还有其他的接⼝,想了解更多的接⼝使⽤的童鞋,⾃⾏⾕歌搜索new FileReader();。
接下来,那就是服务器端的代码了,上⾯的demo,是⽤thinkphp为框架编写的,但其他框架也基本通⽤的。
function base64imgsave($img){
//⽂件夹⽇期
$ymd = date("Ymd");
//图⽚路径地址
$basedir = 'upload/base64/'.$ymd.'';
$fullpath = $basedir;
if(!is_dir($fullpath)){
mkdir($fullpath,0777,true);
}
$types = empty($types)? array('jpg', 'gif', 'png', 'jpeg'):$types;
$img = str_replace(array('_','-'), array('/','+'), $img);
$b64img = substr($img, 0,100);
if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $b64img, $matches)){
$type = $matches[2];
if(!in_array($type, $types)){
return array('status'=>1,'info'=>'图⽚格式不正确,只⽀持 jpg、gif、png、jpeg哦!','url'=>'');
}
$img = str_replace($matches[1], '', $img);
$img = base64_decode($img);
$photo = '/'.md5(date('YmdHis').rand(1000, 9999)).'.'.$type;
file_put_contents($fullpath.$photo, $img);
$ary['status'] = 1;
$ary['info'] = '保存图⽚成功';
$ary['url'] = $basedir.$photo;
return $ary;
}
$ary['status'] = 0;
$ary['info'] = '请选择要上传的图⽚';
return $ary;
}
以上就是PHP代码,原理也很简单,拿到接⼝上传的base64,然后再转为图⽚再储存。使⽤的是thinkphp 3.2,⽆需数据库,PHP环境直接运⾏即可。
php⽬录路径为:
A pplication\Home\Controller\Base64Controller.class.php
html⽬录路径为:
Application\Home\View\Base64\imagesupload.html
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论