获取上传文件(单文件)
var file = e.target.files[0];
判断是否是图片
if (!/\/(?:jpeg|png|gif|jpg)/i.test(file.type)) return
声明FileReader类加载
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
// console.log(e.target.result); //这里的e.target.result就是转换后base64格式的图片文件
let image = new Image();
image.src = e.target.result;
image.onload = function() {
let base64 = getBase64Image(image);
let file= dataURLtoFile(base64, "imgname");
此处为文件上传的file
}}
//将base64转换为文件
function dataURLtoFile(dataurl, filename) {
var arr = dataurl.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename + "." + mime.split("/")[1], { type: mime });
}
通过canvas获取base64数据,radio 为质量压缩
function getBase64Image(img,radio=0.6) {
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);
var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
var dataURL = canvas.toDataURL("image/jpeg",radio);
return dataURL;
}