- ベストアンサー
jQueryでZIPの解凍読み込み方法とは?
- ウェブサーバーにあるCSVをクライアントで見るための方法として、jQueryを使います。
- 最近CSVファイルの容量が大きくなり、FTPアップロードに時間がかかるため、CSVをZIP圧縮して上げることにしました。
- クライアント側でもZIPファイルを読み込むための方法を探しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
んー、jquery.zip.jsを読み込んで $(function(){ $.get('test.zip', 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()); }}) }); これを試しただけでfile.inflate()でcsvの中身が表示されたけど。
その他の回答 (1)
- Taiyonoshizuku
- ベストアンサー率37% (183/489)
補足
回答いただきまして、ありがとうございます。 早速公開されているデモをテストしていました。 test.html を表示させると、 test_get('./test_utf8.zip') が呼ばれ、 その中の $.get(filepath, function(zip){ で zip にデータがダウンロードされるところまでは動作するのですが、 for (var name in zip.files) で zip.files が undefined のため、 なにも動作しません。 この zip.files は、圧縮したファイル名なのかなと思い (例えば、data.csv を圧縮して data.zip を作成した場合は data.csv)、 強引にファイル名を指定してみるも、 次の addentry() で zip.files[name] に失敗してしまいます。 (そりゃそうですよね...。) 結果からすると、これも動作しませんでした。 私の実行の仕方に問題があるのかも知れませんが、 正直スキルがそこまでスキルが高くなくて分かりませんでした。 また何かヒントがありましたら、よろしくお願い致します。
お礼
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 中の、文字データの直後にある文でした。 何か環境が悪いのかもしれません。 もうしばらくテストしてみたいと思います。 ありがとうございます。