IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

JavaScript 内で無圧縮 ZIP を作って Data URI を生成するライブラリを作りました

ちょっと思うところあって

JavaScript 内で、複数のファイル情報を作って Zip で固めて、 Data URI を生成するライブラリを作ってみました。
ソースは以下の zip.js です。
http://svn.coderepos.org/share/lang/javascript/Zip/

使うには

以下の base64.js が必要です。
http://svn.coderepos.org/share/lang/javascript/Base64/trunk/
この base64.js は弾さんが作ったものです。
今回 Zip で使うように、ちょっとチューニングさせていただきました。

こんなことができます

// zip オブジェクトを作る
var zip = new Zip;

// 文字列をファイルとして追加する
zip.addString('Hello, world!!', 'message.txt');

// Ajax を使ってファイルを取得してきて zip 内に追加する
zip.addFile('index.html');
zip.addFile('index.html', 'fuga/fuga.html'); // 名前を付ける

// Ajax を使ってファイルを取得してきて zip 内に追加する(非同期)
zip.addFileAsync('index.html', null, function(file, xhr) { /* callback */});

// 空のディレクトリを追加
zip.addDirectory('hoge/');

// A 要素を作る
var a = document.createElement('a');

// Zip を Data URI に変換する
a.href = zip.getDataURI()

// リンクテキスト
a.textContent = 'hoge.zip';

// DOM に挿入する
docment.body.appendChild(a);

実際の例は以下
DEMO

たぶん動くブラウザ