【问题标题】:IE 11 failed to create file object from byte array in AngularIE 11 无法从 Angular 中的字节数组创建文件对象
【发布时间】:2020-02-19 12:13:48
【问题描述】:

谁能告诉我为什么 IE11 会抛出错误 在仅在 IE 中工作的其他浏览器中出现错误“对象不支持此操作”

let file = new File([files], newFileName, { type: Constants.FILECONTENTTYPE, lastModified: Date.now() });
                let uploadDocument = new UploadDocument();
                uploadDocument.fileName = newFileName;
                uploadDocument.fileItem = file;
                this.fileList = [];
                this.mergedFileList.forEach(fileItem => {
                    this.fileList.push(fileItem);
                });

【问题讨论】:

    标签: javascript angular internet-explorer-11


    【解决方案1】:

    您需要将import 'core-js/es6/object'; 添加到您的 polyfill.ts 文件中。

    IE11 在 ES6 之前发布,因此它没有为对象、数组、日期等实现与现代浏览器 (ES7) 相同的方法。

    您也可以使用 import 'core-js/es7/object'; 导入 ES7 方法,但我认为在您的情况下 ES6 就足够了。

    【讨论】:

    • 我已经添加了 import 'core-js/es6/object';并导入'core-js/es7/object';但我仍然遇到同样的问题
    • 检查是否在 angular.json 中添加了 polyfill.ts 文件
    【解决方案2】:

    IE 不支持File() constructorlastModified

    在 IE 中,您应该创建一个 Blob 对象,然后为 Blob 设置一些特定属性,包括文件名、上次修改日期和类型。文件是 Blob 加上元属性。

    var blob = new Blob([files], { type: Constants.FILECONTENTTYPE });      
    blob['fileName'] = newFileName;     
    blob['lastModifiedDate'] = Date.now();
    

    更多信息,您也可以参考this thread

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2022-07-17
      • 2011-04-11
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多