xkeshav
xkeshav

Reputation: 54050

Failed to construct 'File': Iterator getter is not callable in chrome 60 when use JSON.stringify()

System Configuration : macOS Sierra 10.12.5 ; chrome 60;

I am trying to download JSON data ( response object ) as a json file but when I tried to achive this using browser File() object , it gives error

Failed to construct 'File': Iterator getter is not callable.

below is my code

//`inputData` is the valid response getting from $http.get
var stringifyData = JSON.stringify(inputData);
console.log("stringifyData ", stringifyData);
var file = new File(blob, "filename.json", {type: "text/json;charset=utf-8"});
console.log("file", file);

what is the issue and why I am getting this error. when I use JSON.stringify(inputData, undefined, 4); then it gives no error and displays proper object in the console.

Upvotes: 43

Views: 59271

Answers (2)

Sanat Gupta
Sanat Gupta

Reputation: 1154

I know I am late but I faced the same issue, here's my solution. It converts Blob to File.

imageCropped(event: ImageCroppedEvent) {
  this.Files = event.file;
  let fileName = new Date().getTime() + ".jpeg";
  let filedata = new File([this.Files], fileName, {
    type: "image/jpeg",
    lastModified: Date.now()
  });
  console.log(filedata);
}

Upvotes: 1

Pavlo
Pavlo

Reputation: 44967

In your case File constructor signature is incorrect, the first argument must be:

An Array of ArrayBuffer, ArrayBufferView, Blob, or DOMString objects — or a mix of any such objects. This is the file content encoded as UTF-8.

https://developer.mozilla.org/en-US/docs/Web/API/File/File#Parameters

new File([blob], "filename.json", {type: "text/json;charset=utf-8"});

Upvotes: 80

Related Questions