HTML5の機能を利用すると、ファイルの作成が非常に簡単になる。ここでは、作成したファイルをローカル環境にダウンロードすることを想定。
var jsonString = JSON.stringify(gGpsData); //ファイル化したい内容をJSON形式でシリアライズ //var jsonString = JSON.stringify(gGpsData,null,2); // 空白を入れて見やすい形式にする // タイプを指定してBlobオブジェクトを生成。対象を [ ] で囲む。 var blob = new Blob([jsonString],{type:'text/plain'});
以前(2012年)は、Blob()ではなくBlobBuilder()を利用していた。Blobでは、対象を[]で囲んで配列にする。また、type: でMIMEタイプを指定する。
Blobへのリンクは以下で取得できる。
URL.createObjectURL(blob)
これを利用して、HTMLの要素で、
- href=”XXX”
- target=”_blank”
- download=”YYY”
リンク先を指定
新しいタブ・ウィンドウでリンク先を開く
ダウンロード時のファイル名の指定。今のところChromeのみ対応(?)。リンクをクリックするとダウンロードが始まり、この名前(YYY)でファイルが作成される。(=新しいタブは開かれない。)
まとめると以下のイメージになる。gFileNameGpsOrgはもとのGPSファイル名(例:aaa.log)。getJsonFileName()は自作のヘルパー関数で、元のファイル名の拡張子を json に変えるだけのもの。getJsonFileName(‘aaa.log’) の結果は aaa.json になる。
function writeGpsData(){ var jsonString = JSON.stringify(gGpsData); // ファイル化したい内容をJSON形式でシリアライズ //var jsonString = JSON.stringify(gGpsData,null,2); // 空白を入れて見やすい形式にする。 // タイプを指定してBlobオブジェクトを生成。対象を [ ] で囲む。 var blob = new Blob([jsonString],{type:'text/plain'}); //var a = document.createElement("a"); //var label = document.createTextNode("ダウンロード"); var str = '<a href="' + URL.createObjectURL(blob) + '" target="_blank" download="' + getJsonFileName(gFileNameGpsOrg) +'">'; str += getJsonFileName(gFileNameGpsOrg); str +='</a>'; $('#xgpsview02JsonDownload').html(str); }
ピンバック: GPSファイルをJSON形式に変換する – File API (HTML5) | Try Lifelog
ピンバック: 内部データをファイルとしてダウンロードできるようにする | Try Lifelog