JavaScript のみを使用してファイルにデータを書き込むことは可能ですか? 質問する

JavaScript のみを使用してファイルにデータを書き込むことは可能ですか? 質問する

JavaScript を使用して既存のファイルにデータを書き込みたいのですが、コンソールに印刷したくありません。実際にデータを書き込みたいのですabc.txt。多くの回答済みの質問を読みましたが、どこもコンソールに印刷しています。どこかでコードが提供されているのですが、機能していません。誰か助けてください。実際にファイルにデータを書き込むにはどうすればいいのでしょうか?

コードを参照しましたが、動作しません。次のエラーが発生します。

キャッチされない TypeError: 不正なコンストラクタ

Chromeで

SecurityError: 操作は安全ではありません。

Mozillaで

var f = "sometextfile.txt";

writeTextFile(f, "Spoon")
writeTextFile(f, "Cheese monkey")
writeTextFile(f, "Onion")

function writeTextFile(afilename, output)
{
  var txtFile =new File(afilename);
  txtFile.writeln(output);
  txtFile.close();
}

では、実際に JavaScript のみを使用してデータをファイルに書き込むことはできるのでしょうか?

ベストアンサー1

ブラウザでファイルを作成するにはBlobそしてURL.createObjectURL. 最近使用したブラウザこれを支持する

作成したファイルを直接保存することはできません。セキュリティ上の大きな問題を引き起こす可能性があるためです。ただし、ダウンロードリンクとしてユーザーに提供することはできます。download属性ダウンロード属性をサポートするブラウザでは、リンクのファイル名が付けられます。ただし、他のダウンロードと同様に、ファイルをダウンロードするユーザーがファイル名の最終決定権を持ちます。

var textFile = null,
  makeTextFile = function (text) {
    var data = new Blob([text], {type: 'text/plain'});

    // If we are replacing a previously generated file we need to
    // manually revoke the object URL to avoid memory leaks.
    if (textFile !== null) {
      window.URL.revokeObjectURL(textFile);
    }

    textFile = window.URL.createObjectURL(data);

    // returns a URL you can use as a href
    return textFile;
  };

これはこの手法を使用して、 から任意のテキストを保存しますtextarea

ユーザーにリンクをクリックさせるのではなく、すぐにダウンロードを開始したい場合は、マウスイベントを使用してリンクのマウスクリックをシミュレートすることができます。ライフキューブ答え私は更新された例この技術を使用しています。

  var create = document.getElementById('create'),
    textbox = document.getElementById('textbox');

  create.addEventListener('click', function () {
    var link = document.createElement('a');
    link.setAttribute('download', 'info.txt');
    link.href = makeTextFile(textbox.value);
    document.body.appendChild(link);

    // wait for the link to be added to the document
    window.requestAnimationFrame(function () {
      var event = new MouseEvent('click');
      link.dispatchEvent(event);
      document.body.removeChild(link);
    });

  }, false);

おすすめ記事