前言
在做身份证读卡器自动录入功能时,发现返回的图片信息是base64字符串。但需要将图片存储到服务器上,所以就要将base64字符串转化为图片上传。
一、操作步骤
1.转化为Blob
将base64转化为二进制文件
<font color=#999AAA >代码如下:
// 将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.上传文件服务器
得到图片文件,剩下就和普通的图片上传流程一样
<font color=#999AAA >代码如下:
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知识,一起学习,共同成长。