Base64转化为图片并上传服务器
前言
在做身份证读卡器自动录入功能时,发现返回的图片信息是base64字符串。
但需要将图片存储到服务器上,所以就要将base64字符串转化为图片上传。
一、操作步骤
1.转化为Blob
将base64转化为二进制文件
代码如下:
1 // 将base64转换为blob 2 function dataURLtoFile(dataURI, type) { 3 let binary = atob(dataURI.split(',')[1]); 4 let array = []; 5 for (let i = 0; i < binary.length; i++) { 6 array.push(binary.charCodeAt(i)); 7 } 8 return new Blob([new Uint8Array(array)], {type: type}); 9 }
2.上传文件服务器
得到图片文件,剩下就和普通的图片上传流程一样
代码如下:
1 function upload(baseStr, index) { 2 // 图片地址 3 let imgBase = 'data:image/jpeg;base64,' + baseStr; 4 let blob = dataURLtoFile(imgBase, 'image/jpeg'); 5 var formData = new FormData(); 6 let fileOfBlob = new File([blob], new Date() + '.jpg'); // 重命名了 7 formData.append("faceInfo", fileOfBlob); 8 $.ajax({ 9 url: baseImgUrl + "xx/xx/uploadImage", //用于文件上传的服务器端请求地址 10 dataType: 'json', 11 type: 'POST', 12 async: false, 13 data: formData, 14 processData: false, // 使数据不做处理 15 contentType: false, // 不要设置Content-Type请求头 16 success: function (r) { //服务器成功响应处理函数 17 if (r.state) { 18 // 上传成功后的处理 19 var data = r.result; 20 // 图片地址 21 var url = baseImgUrl + data[0] 22 // ... 23 } else { 24 message("错误", "上传失败"); 25 } 26 } 27 }); 28 }