我是把固定区域截图后生成图片上传后台,大部分时候都没问题,偶尔会出现图片有错,打开图片的时候报错:因存在错误而无法显示。
代码如下:
function imgUpload(img2,id) {
html2canvas($("#imgArea")[0]).then((canvas) => {
var img1 = canvas.toDataURL();
var data = new FormData();
data.append("ImgFile", dataURLtoFile(img1, "authorize.png"));
data.append("ImgFile2", dataURLtoFile(img2, "authorizeName.png"));
var ajaxRequest = $.ajax({
type: "POST",
url: "/api/authorize/save?id=" + id,
contentType: false,
processData: false,
data: data
});
ajaxRequest.done(function (param) {
});
})
}
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, { type: mime });
};
js里把图片转成base64字符串上传
我本来就是获取到的base64,转成文件上传的,我试试直接上传字符串
请问,这样做是有什么好处吗?
可能和 ajax 同步异步有关系。换成同步试试
在日常开发中,文件上传是必不可少的功能。如,用户头像,excel文件上传等等。但是,由于开发方式的问题,比如是单体应用还是前后端分离模式,导致实现上有些许的差异。
参考: