ちょっと思うところあって
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