Base64转化为图片并上传服务器

前言

在做身份证读卡器自动录入功能时,发现返回的图片信息是base64字符串。但需要将图片存储到服务器上,所以就要将base64字符串转化为图片上传。

一、操作步骤

1.转化为Blob

将base64转化为二进制文件

代码如下:

// 将base64转换为blob
function dataURLtoFile(dataURI, type) {
    let binary = atob(dataURI.split(',')[1]);
    let array = [];
    for (let i = 0; i < binary.length; i++) {
        array.push(binary.charCodeAt(i));
    }
    return new Blob([new Uint8Array(array)], {type: type});
}

2.上传文件服务器

得到图片文件,剩下就和普通的图片上传流程一样

代码如下:

function upload(baseStr, index) {
    // 图片地址
    let imgBase = 'data:image/jpeg;base64,' + baseStr;
    let blob = dataURLtoFile(imgBase, 'image/jpeg');
    var formData = new FormData();
    let fileOfBlob = new File([blob], new Date() + '.jpg'); // 重命名了
    formData.append("faceInfo", fileOfBlob);
    $.ajax({
        url: baseImgUrl + "xx/xx/uploadImage", //用于文件上传的服务器端请求地址
        dataType: 'json',
        type: 'POST',
        async: false,
        data: formData,
        processData: false, // 使数据不做处理
        contentType: false, // 不要设置Content-Type请求头
        success: function (r) { //服务器成功响应处理函数
            if (r.state) {
                // 上传成功后的处理
                var data = r.result;
                // 图片地址
                var url = baseImgUrl + data[0]
                // ...
            } else {
                message("错误", "上传失败");
            }
        }
    });
}

创作不易,关注、点赞就是对作者最大的鼓励,欢迎在下方评论留言
求关注,定期分享Java知识,一起学习,共同成长。

你可能感兴趣的:(Base64转化为图片并上传服务器)