将图片转化为base64格式通过ajax传给后端

最近在做注册登录系统时,需要传图片给后端,因为native直接用的base64格式的。所以我们需要做的就是将 用户上传的图片预览出来,同时转化为base64格式通过ajax传给后端。

废话不多说直接上代码

第一步,我们需要将input file的文件提取img标签可以识别的url。

//建立一個可存取到該file的url
function getObjectURL(file) {
	var url = null ;
	if (window.createObjectURL != undefined) { // basic
		url = window.createObjectURL(file) ;
	}else if (window.URL != undefined) { // mozilla(firefox)
		url = window.URL.createObjectURL(file) ;
	}else if (window.webkitURL != undefined) { // webkit or chrome
		url = window.webkitURL.createObjectURL(file) ;
	}
	return url ;
}
第二步,input的change事件,调用函数使得上传图片后实现预览功能

$("#upload").on("change",function(){
	var objUrl = getObjectURL(this.files[0]) ; //获取图片的路径,该路径不是图片在本地的路径
	if (objUrl) {
		$(".qq_bind_headImg").attr("src", objUrl) ; //将图片路径存入src中,显示出图片
	}
});
第三步,通过ajax将图片传给后端,这里用到了FR

var file = document.getElementById('upload').files[0];
if (file) {
    var reader = new FileReader();
    reader.onload = function ( event ) {
        avatar = event.target.result;
	$.ajax({
            url: '...',
            cache:false,
            type: 'POST',
            data: {
		avatar: reader.result,
	    },
            dataType: 'json',
            success : function(rs){
				
            },
            error: function(e){
            }
        });
    };
	reader.readAsDataURL(file);
}
PS:如果不想使用FR方式,这里还提供了canvas方式转化

function imgSrcToBase64(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img,0,0,img.width,img.height);
    return canvas.toDataURL();
}








  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值