web-dev-qa-db-fra.com

Échec de construction du «fichier»: le getter d'itérateur n'est pas appelable dans chrome 60 lors de l'utilisation de JSON.stringify ()

Configuration du système: macOS Sierra 10.12.5; chrome 60;

J'essaie de télécharger des données JSON (objet de réponse) en tant que fichier json, mais lorsque j'ai essayé d'y parvenir à l'aide de l'objet File () du navigateur, cela donne une erreur

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

ci-dessous est mon 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);

quel est le problème et pourquoi j'obtiens cette erreur. lorsque j'utilise JSON.stringify(inputData, undefined, 4); alors il ne donne aucune erreur et affiche l'objet approprié dans la console.

17
diEcho

Dans votre cas, la signature du constructeur File est incorrecte, le premier argument doit être:

Tableau d'objets ArrayBuffer, ArrayBufferView, Blob ou DOMString - ou un mélange de ces objets. Il s'agit du contenu du fichier codé en 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"});
38
Pavlo

Je sais que je suis en retard, mais je suis confronté au même problème, alors j'ai pensé que je devrais publier ma fonction, cela aidera à convertir BLOB en FILE. Merci

 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);
  }
0
Sanat Gupta