サーバー経由ではなく、ユーザーがダウンロードできるようにメモリ内にファイルを作成するにはどうすればよいでしょうか? 質問する

サーバー経由ではなく、ユーザーがダウンロードできるようにメモリ内にファイルを作成するにはどうすればよいでしょうか? 質問する

クライアント側でテキスト ファイルを作成し、サーバーとやり取りせずにユーザーにダウンロードを促す方法はありますか?

相手のマシンに直接書き込むことはできないことはわかっていますが (セキュリティ上の問題など)、ファイルを作成して相手に保存を促すことはできますか?

ベストアンサー1

HTML5 対応ブラウザ向けのシンプルなソリューション...

function download(filename, text) {
  var element = document.createElement('a');
  element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  element.setAttribute('download', filename);

  element.style.display = 'none';
  document.body.appendChild(element);

  element.click();

  document.body.removeChild(element);
}
form * {
  display: block;
  margin: 10px;
}
<form onsubmit="download(this['name'].value, this['text'].value)">
  <input type="text" name="name" value="test.txt">
  <textarea name="text"></textarea>
  <input type="submit" value="Download">
</form>

使用法

download('test.txt', 'Hello world!');

おすすめ記事