欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-30 22:02:35
...

最近在做注册登录系统时,需要传图片给后端,因为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();
}