图片裁剪base64编码生成file文件上传,兼容IE浏览器

阅读542评论0
在使用图片裁剪工具的时候,裁剪后的图片是base64编码,如果我们以base64直接提交给后台,特别是图片大的时候会报Warning: POST Content-Length of XXXXX bytes exceeds the limit of XXXXX bytes in Unknown on line 0。使用js的file对象提交没事,但IE不兼容,...

在使用图片裁剪工具的时候,裁剪后的图片是base64编码,如果我们以base64直接提交给后台,特别是图片大的时候会报Warning: POST Content-Length of XXXXX bytes exceeds the limit of XXXXX bytes in Unknown on line 0。

使用js的file对象提交没事,但IE不兼容,这个时候需要用Blob转换下。

下面是兼容版的图片base64转file,可以使用这个直接提交后台,后台正常接受file类型数据处理即可。

/**
*图片base64转file文件上传
*@param string base64Str 图片的base64字符串
*@param string filename 图片的名称
*/
function base64ToFiles(base64Str, filename) {
	filename = filename || "file";
    var arr = base64Str.split(','),
		mime = arr[0].match(/:(.*?);/)[1],
		suffix = mime.split('/')[1],
		bstr = atob(arr[1]),
		n = bstr.length,
		u8arr = new Uint8Array(n);
    while(n--){
        u8arr[n] = bstr.charCodeAt(n);
    }
	var theBlob=new Blob([u8arr],{type:mime});
	theBlob.lastModifiedDate=new Date();
	theBlob.lastModified=theBlob.lastModifiedDate;
	theBlob.name=filename+"."+suffix;
    return {"file":theBlob,"name":filename+"."+suffix};
}

0 位网友评论:

欢迎来评论

请填写验证码