php下base64图片上传

2 篇文章 0 订阅
1 篇文章 0 订阅

主要内容:

1,图片base64转码;

2,h5文件流读取;

3,php保存base64图片;

4,图片上传与保存;

 

用base64上传图片优点

1,可以采用异步的方式上传,可以不用等服务器响应直接回显页面

2,样式变得自由,不用局限于表单提交

3, 多图的分段提交,减少等待时间

 

html代码:

uploadbtn就是点击上传图片的外观,可以自由设定,

logoshow 图片回显dom

imgupbtn真正意义的文件上传框

<style>
input{
 width:0px;
 height:0px;
 float: left;
}
button{
width:120px;
height:50px;
text-align: center;
background-color:rgba(0,0,0,0.2);
}
</style>
<div id="uploadbtn">
 <span id="logoshow"></span>
 <input id="imgupbtn" type="file"/>
</div>
<button id="uploadimg">
  上传
</button>


js代码:

var adddata={};
$("#uploadbtn").on("click",function(){
 $("#imgupbtn")[0].click()
})
$("#imgupbtn").on("change",function(){
var files = $(this)[0].files[0];
var filename = files.name;
var filetype = files.type.replace(/image/g,"");
var fileReader = new FileReader();
fileReader.readAsDataURL(files);
fileReader.onload =function(readerEvent){
 var str ="url("+readerEvent.target.result+")";
 adddata.logo=readerEvent.target.result;
 adddata.logotype = filetype;
  //回显页面
 $("#logoshow").css("background-image",str);  
 }
})
$("#uploadimg").on("click",function(){
$.ajax({
  type:"post",
  url:"php地址",
  dataType:"json",
  async:true,
  data:adddata,
   success:function(data){
   console.log(data)
  },
    error:function(msg){
      console.log(msg.responseText)
    }
  });
})


php代码:

function saveImg($key,$base64,$imgtype){
$base64=preg_replace("/^(data:s*image/(w+);base64,)/","",$base64);
$imgtype = $imgtype;
$img = base64_decode($base64);
$sqlimgname="/upload/".$key.rand(1000, 9999).".".$imgtype;
$imgname=$_SERVER["DOCUMENT_ROOT"].$sqlimgname;
$a=file_put_contents($imgname,$img);
//返回的是字节数
if($a){  
 return $sqlimgname;
}else{
 return false;
}
}
saveImg("test",$_post["logo"],$_post["logotype"])


注意事项:

①上传地址为相对于php文件的/upload/文件夹下

②该文件夹必须有php有读写权限,否则报错

key是为了反正重名覆盖的唯一标示,建议可以用uuid替代

④返回值是相对路径,如需绝对路径自行配置

⑤自行替换程序中的php地址为自己的php地址




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值