※ ChatGPTを利用し、要約された質問です(原文:jQueryでzipを解凍読み込みするには?)
jQueryでZIPの解凍読み込み方法とは?
このQ&Aのポイント
ウェブサーバーにあるCSVをクライアントで見るための方法として、jQueryを使います。
最近CSVファイルの容量が大きくなり、FTPアップロードに時間がかかるため、CSVをZIP圧縮して上げることにしました。
クライアント側でもZIPファイルを読み込むための方法を探しています。
ウェブサーバーにあるCSVの内容をクライアントで見るため、jQueryを使い、
$.get('data.csv', function(data) {
var csv = $.csv()(data);
$(csv).each(function(index) {
// 読み込んだデータを処理
// :
});
});
のようなことをしています。
最近CSVファイルの容量が大きくなってきて、
ウェブサーバーにCSVをFTPアップロードするのに時間がかかるようになったため、
CSVをZIP圧縮して上げることとなりました。
そこでクライアント側でも、
$.get('data.csv', function(data) {
の部分のファイル名をZIPファイルのものにして、
$.get('data.zip', function(data) {
として、ZIPファイルを読み込むように修正しました。
その結果、ZIPファイルの内容はdataに読み込まれているようです。
しかし、ここからどうやって解凍してやればいいか分かりません。
ZIP解凍をウェブで検索していろいろと試してみたのですが、
うまく動作しなかったり、使い方が分からなかったりでした。。
それぞれどういう結果でうまく動作しなかったのかをここできちんと書くのは難しいですが、
例えば、以下のようなものです。
http://d.hatena.ne.jp/end0tknr/20110109/1294582088
http://polygon-planet-log.blogspot.jp/2012/04/ja …
https://github.com/shogo82148/zipjs
http://www.onicos.com/staff/iz/amuse/javascript/ …
要は、上記のように、
$.get('data.zip', function(data) {
によってダウロードされてメモリ上にロードされたZIPファイルの中身がdataにあるので、
これを解凍したいということなのですが、
なにか良い方法はありませんでしょうか。
よろしくお願い致します。
お礼
JSZip を使ってできました。 結局別の方法で実現することになりましたが、 回答いただきましてありがとうございました。 ちなみに JSZip は公式サイトの情報も豊富で、 とっつきやすかったです。
補足
Taiyonoshizuku 様 重ねて回答をありがとうございます。 動くところでは問題なく動くのですね。 当方、サンプルの test.html を今回提示いただいたソースに置き換えて、 $(function(){ test_get('./test_utf8.zip') }) function test_get(filepath) { $.get(filepath, function(archive){ console.debug(archive.files); for (var i in archive.files){ var file = archive.files[i]; console.log('========='); console.log(file.name); console.log(file.filesize); console.log(file.inflate()); } }) } のような感じにしてみてデバッガで実行してみたところ、 $.get(filepath, function(archive) までは来るのですが、 中に入らず、console.debug(archive.files); が実行されることなしに抜けてしまいます。 さきほど気がついたのですが、エラーが上がっていました。 「 RangeError: invalid array length ...".replace(/~(..)/g,function(A,E){return Array(parseInt(E,36)+1).join(" ")});Stri... 」 だそうで、これは jquery.zip.js 中の、文字データの直後にある文でした。 何か環境が悪いのかもしれません。 もうしばらくテストしてみたいと思います。 ありがとうございます。