web-dev-qa-db-ja.com

'File'の構築に失敗しました:イテレータゲッターは、JSON.stringify()を使用する場合、chrome 60で呼び出し可能ではありません

システム構成:macOS Sierra 10.12.5; chrome 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);を使用すると、エラーは発生せず、コンソールに適切なオブジェクトが表示されます。

17
diEcho

あなたの場合、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"});
38
Pavlo

遅れていることはわかっていますが、同じ問題に直面しているので、BLOBを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);
  }
0
Sanat Gupta