前端在做开发的过程中少不了要上传文件或者图片到服务器端,有时候上传图片是用base64格式上传,有时候接口则是要求用表单的文件流形式上传。下面两个方法就是对图片形式进行转换。
1. base64 转 file 表单形式
function dataURLtoFile(dataurl,filename){
//将base64转换为文件
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 newFile([u8arr],filename,{type:mime});
}
varfile=dataURLtoFile(imgUrl,"img");
2. file 图片转base64 base64转blob,blob转file
function dataURLtoBlob(dataurl)
{
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 Blob([u8arr],{type:mime});
};
//将blob转换为file
function blobToFile:(theBlob,fileName){
theBlob.lastModifiedDate= new Date();
theBlob.name=fileName;
returnthe Blob;
};
//调用
var blob=dataURLtoBlob(base64Data);
var file=blobToFile(blob,imgName);