Не удалось создать файл: средство получения итератора не вызывается в chrome 60 при использовании JSON.stringify ()

Конфигурация системы: macOS Sierra 10.12.5; хром 60;

Я пытаюсь загрузить данные JSON (объект ответа) в виде файла json, но когда я попытался добиться этого с помощью объекта File () браузера, он выдает ошибку

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

ниже мой код

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

в чем проблема и почему я получаю эту ошибку. когда я использую JSON.stringify(inputData, undefined, 4);, он не выдает ошибок и отображает правильный объект в консоли.


person diEcho    schedule 04.08.2017    source источник


Ответы (2)


В вашем случае подпись конструктора File неверна, первый аргумент должен быть:

Массив объектов ArrayBuffer, ArrayBufferView, Blob или DOMString - или сочетание любых таких объектов. Это содержимое файла в кодировке 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"});
person Pavlo    schedule 17.08.2017
comment
Похоже, то же самое относится и к new Blob(...). Спасибо за явный пример. - person Nae; 31.07.2018
comment
можете ли вы ответить на этот stackoverflow.com/questions/65541545/ - person Nithin Paul; 02.01.2021

Я знаю, что опаздываю, но столкнулся с той же проблемой, поэтому решил опубликовать свою функцию, это поможет преобразовать BLOB в ФАЙЛ. Спасибо

 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);
  }
person Sanat Gupta    schedule 09.04.2019