jQuery.zip.inflate - jQuery Plugin for inflating zip archive
かなりニッチな気がしますが・・・
Queryでzipファイルを解凍するためのプラグインを作りました。
ソースは以下に。
https://github.com/yatt/jquery.zip.inflate
実際にコーディングしたのはjQuery.ajaxとの統合部分で、実際にzipを処理する部分はhttps://github.com/hinassan/zipjsから頂きました。スコープを狭めるために、定義をグローバルなthisではなくjQueryオブジェクト内に定義されるように変更した程度でほぼ全て引用です。
使い方
jQuery.ajaxの実行時オプションのdataTypeに'zip'を指定すると、successコールバック関数にzipファイルオブジェクトが渡されます。また、dataTypeが指定されていなくてもurlの末尾が.zipであれば(例:http://exmaple.com/test.zip?a=1&b=hoge)、判別してzipファイルオブジェクトを返します。$.getでも同様です。
sample)
function inflate_it(bytes) { var zip = $.zip.inflate(bytes) console.log(zip) } $.ajax({ url: 'http://example.com/proxy.php?url=http%3A//externalsite.com/resource', dataType: 'zip', success: function(zip){ console.log(zip.files) } }) $.get('./archive.zip', function(zip){ console.log(zip.files) })
jQueryを拡張するの面白いですね−。ライブラリ側で定義されているメソッドの動作をクロージャでラップして動作を上書きとか本当に面白い。。。
それにしてもMIME Typeのx-user-definedなんて初めて知ったな−。