ajax上传图片,偶尔会出现后台保存的图片有错误或者已损坏,请问可能是什么原因造成的?

2021-01-18 19:31发布

问题:

我是把固定区域截图后生成图片上传后台,大部分时候都没问题,偶尔会出现图片有错,打开图片的时候报错:因存在错误而无法显示。
代码如下:

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 });
    };

回答1:

js里把图片转成base64字符串上传



回答2:

可能和 ajax 同步异步有关系。换成同步试试



回答3:

在日常开发中,文件上传是必不可少的功能。如,用户头像,excel文件上传等等。但是,由于开发方式的问题,比如是单体应用还是前后端分离模式,导致实现上有些许的差异。

参考:

  • 如何用.NET mvc和webapi实现文件上传