将File对象或者Bolb对象转为dataURL
/**
* @param {File对象} file
* @param {函数,实参接收获取的dataUrl} callback
*/
//将传入的File/Blob对象转为base64的dataURL
function file2DataUrl(file, callback) {
var reader = new FileReader();
reader.onload = function() {
callback(reader.result);
};
reader.readAsDataURL(file);//FileReader对象的方法,可以读取Blob或者File对象的数据,转化为dataURL格式
}
/*以下是获取file文件的方式:*/
//input type=file的表单获取
file.oninput = function() {
console.log(this.files[0])
file2DataUrl(this.files[0], function(img) {
console.log(img)
})
}
将base64的dataURL转为Blob对象
function dataURLtoBlob(dataurl) {
var arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), //全局变量的属性atob,解码base64编码
n = bstr.length,
u8arr = new Uint8Array(n);//创建一个8位无符号整型数组,数组项取值范围是0~255(二进制8位最大值11111111=>255)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new Blob([u8arr], {
type: mime
})
}
dataURLtoBlob('data:image/png;base64,XXXXXXXX')
将Blob对象转为File对象
function blobtoFile({ type } = blob) { return new File([blob], '自定义文件名称', { type })}//调用上面的dataURLtoBlob方法生成测试的dataURLvar blob = dataURLtoBlob('data:image/png;base64,XXXXXXXX');console.log(blobtoFile(blob))