Is there an alternative for File() constructor for Safari and IE? Is there an alternative for File() constructor for Safari and IE? angularjs angularjs

Is there an alternative for File() constructor for Safari and IE?


I Suggest to use the blob api, I've found the same problem and I solved like that:

var html = <svg>whatever on svg </svg>var fileName = "myfile.svg";var blob = new Blob([html], {type: 'image/svg'});blob.lastModifiedDate = new Date();// var blobAttrs = {type: "image/svg"};// var file = new File([html], fileName, blobAttrs);var formData = new FormData();formData.append("file",blob,fileName);

It is not a "file", but you can use it like it was.


According to web "Can I use" Safari does not support the new File() constructor. See this link http://caniuse.com/#feat=fileapi

So I think you have to either use FileReader or maybe use some of the polyfills listed here https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

Especially this one could be useful for you https://github.com/mailru/FileAPI (I did not use it myself)

Also have a look at this SO answer What to use instead of FileReader for Safari?


If you can use ES6 classes:

class CustomFile extends Blob{    constructor(blobParts, filename, options) {        super(blobParts, options);        this.name = filename || "";        if(options) {          this.lastModified = options.lastModified;        }    }    lastModified = 0;    name = "";}const blob = new Blob();const fileObject = new CustomFile([blob],"myfile");console.log(fileObject);