2013-10-20

javascript:ファイルの出力

リンクをクリックしてテキストをローカルファイルに出力
(IE10の場合、ローカルでは動作しない。)

サンプル
応用例(GPXファイルを加工するウェブアプリ)

◆html

<!DOCTYPE html>
<html lang="ja">
<head>
<title>Blob</title>
<script src="jquery.js"></script>
<script src="Blob.js"></script>
</head>
<body>
<textarea id="content" cols="40" rows="5">Hello, World!
こんにちは、みなさん!</textarea><br>
<a id="download" target="_blank">ダウンロード(IEでは、右クリック>対象をファイルに保存)</a>
</body>
</html>

◆javascript(Blob.js)

20行目:"type"を"application/x-msdownload"に設定することで、テキストでもダウンロードが可能。"text/plain"に設定するとブラウザに表示されてしまう。
"type"を設定せずに、var blob = new Blob([ content ]);としてもダウンロードできた(2016-05-31)
25行目:"tmp.txt"は保存するときのデフォルトのファイル名。IEでは動作しない。

注意)
contentに日本語が含まれているとUTF-8で、含まれていないとShift-JISで保存される。
Shift-JISで保存されたgpxファイルをテキストエディタで日本語を含むように書き換えた場合、Googleのマイマップで読み込むと文字化けする。

$(function() {

 if (typeof Blob !== "undefined") {
//  alert('このブラウザに対応しています');
 } else {
  alert('このブラウザには対応していません');
 }

 $("#content").keyup(function(){
  setBlobUrl("download", $("#content").val());
 });
    
    $("#content").keyup(); // 上で設定したkeyupイベント(setBlobUrl)を実行する

});

function setBlobUrl(id, content) {
        
 // 指定されたデータを保持するBlobを作成する。
    var blob = new Blob([ content ], { "type" : "application/x-msdownload" });

 // Aタグのhref属性にBlobオブジェクトを設定する。
    window.URL = window.URL || window.webkitURL;
    $("#" + id).attr("href", window.URL.createObjectURL(blob));
    $("#" + id).attr("download", "tmp.txt");

}


◆javascript(jquery.js)

jQueryからダウンロード


参考にしたページ




以上