首页 > 解决方案 > 在 Internet Explorer 上使用 JavaScript 将 Base64 数据转换为文件时出错(0x800a01bd - JavaScript 运行时错误:对象不支持此操作)

问题描述

我正在尝试使用 asp.net 上的 javascript 将 base64 数据转换为文件,但在最后阶段将 blob 转换为文件时,我在最后阶段收到(0x800a01bd - JavaScript 运行时错误:对象不支持此操作)错误。

这是我的代码:

function dataBaseURLtoFile(str) {
    // extract content type and base64 payload from original string
    var pos = str.indexOf(';base64,');
    var type = str.substring(5, pos);
    var b64 = str.substr(pos + 8);

    // decode base64
    var imageContent = atob(b64);

    // create an ArrayBuffer and a view (as unsigned 8-bit)
    var buffer = new ArrayBuffer(imageContent.length);
    var view = new Uint8Array(buffer);

    // fill the view, using the decoded base64
    for (var n = 0; n < imageContent.length; n++) {
        view[n] = imageContent.charCodeAt(n);
    }

    // convert ArrayBuffer to Blob
    var blob = new Blob([buffer], { type: type });

    //convert blob to file

    var file = new File([blob], "name", { type: "image/jpeg", });

    return file;
}

标签: javascriptasp.netinternet-explorer

解决方案


我尝试检查您的代码,发现问题在下面一行。

 var file = new File([blob], "name", { type: "image/jpeg", });

IE 和 Edge 浏览器不支持 File() 构造函数。

File.File() 构造函数

对于 IE 和 Edge 浏览器,您需要使用任何替代方式。

您可以尝试参考下面的线程,可能会为您提供一些有关替代方法的有用信息。

Safari 和 IE 的 File() 构造函数是否有替代方法?


推荐阅读