base64跟file之间的转换
base64图片转成file对象
function base64ToFile(data) {
// 将base64 的图片转换成file对象上传 atob将ascii码解析成binary数据
let binary = atob(data.split(',')[1]);
let mime = data.split(',')[0].match(/:(.*?);/)[1];
let array = [];
for (let i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
let fileData = new Blob([new Uint8Array(array)], {
type: mime,
});
let file = new File([fileData], `${new Date().getTime()}.png`, {
type: mime
});
return file;
}
file对象转成base64
const blobToDataURL = (blob, cb) => {
let reader = new FileReader();
reader.onload = function (evt) {
let base64 = evt.target.result;
cb(base64);
};
reader.readAsDataURL(blob);
};
export default blobToDataURL;
使用:需要配合input type="file"来使用
import blobToDataURL from '../js/blobToDataURL';
//....
// 选择图片
inputImage (e) {
let img = e.target.files[0];
if(img) {
let url = URL.createObjectURL(img);
let base64 = blobToDataURL(img, (base64Url) => {
this.inputImg = base64Url;
});
}
},
jquery 的ajax上传文件需要注意
var formData = new FormData();
formData.append("file", file);
$.ajax({
url:'xxxx',
contentType:false,//contentType:必须是false
})