Instantiate File object in Microsoft Edge

。_饼干妹妹 提交于 2019-11-27 03:25:30

问题


I'm trying to create an image file from a blob-object using the File API and then add it to a form to be sent via XHR. Works like a charm in chrome, but crashes the app in Microsoft Edge.

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

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

Are there any alternatives to the File API or workarounds to attach a file to the form? If I just add the blob to the form it's not recognized as an image.

Thanks!


回答1:


Currently IE11, and Edge support the FileAPI but not the File constructor.

In the link that you posted to caniuse.com, there are notes for IE and Edge stating that the File constructor is not supported. I encountered the same issue and my work around was to use Blob instead of File, and then set the type of the blob.

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



回答2:


This is what I did and works

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

Now can continue by variable file as a File in Edge or other browsers.



来源:https://stackoverflow.com/questions/40911927/instantiate-file-object-in-microsoft-edge

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!