在 Microsoft Edge 中实例化文件对象

Instantiate File object in Microsoft Edge

我正在尝试使用 File API 从 blob 对象创建一个图像文件,然后将其添加到要通过 XHR 发送的表单中。在 chrome 中表现出色,但在 Microsoft Edge 中会导致应用程序崩溃。

let file = new File([blobContent], "image.png");

let form = new FormData();
form.append("file", file);

是否有替代文件 API 的替代方法或将文件附加到表单的变通方法?如果我只是将 blob 添加到表单中,它不会被识别为图像。

谢谢!

目前IE11、Edge支持FileAPI,不支持File构造函数。

在您发布到 caniuse.com 的 link 中,有针对 IE 和 Edge 的注释指出不支持文件构造函数。我遇到了同样的问题,我的解决方法是使用 Blob 而不是 File,然后设置 blob 的类型。

var blob = new Blob([blobContent], {type : 'image/jpeg'});

这就是我所做的工作

// to change Blob to File
private blobToFile(theBlob: Blob, fileName: string): File {
   const b: any = theBlob;
   b.lastModifiedDate = new Date();
   b.name = fileName;
   return b as File;
}

let file;
if (!navigator.msSaveBlob) { // detect if not Edge
   file = new File([b], document.originalName, { type: document.mimeType });
} else {
   file = new Blob([b], { type: document.mimeType });
   file = this.blobToFile(file, document.originalName);
}

现在可以在 Edge 或其他浏览器中将变量文件作为文件继续。