File API (HTML5)でファイルを作成する

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);
}
カテゴリー: Tips タグ: , パーマリンク

File API (HTML5)でファイルを作成する への2件のフィードバック

  1. ピンバック: GPSファイルをJSON形式に変換する – File API (HTML5) | Try Lifelog

  2. ピンバック: 内部データをファイルとしてダウンロードできるようにする | Try Lifelog

コメントは停止中です。