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