ウェブサーバーにある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にあるので、
これを解凍したいということなのですが、
なにか良い方法はありませんでしょうか。
よろしくお願い致します。
No.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の中身が表示されたけど。
この回答への補足
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 中の、文字データの直後にある文でした。
何か環境が悪いのかもしれません。
もうしばらくテストしてみたいと思います。
ありがとうございます。
JSZip を使ってできました。
結局別の方法で実現することになりましたが、
回答いただきましてありがとうございました。
ちなみに JSZip は公式サイトの情報も豊富で、
とっつきやすかったです。
No.1
- 回答日時:
この回答への補足
回答いただきまして、ありがとうございます。
早速公開されているデモをテストしていました。
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] に失敗してしまいます。
(そりゃそうですよね...。)
結果からすると、これも動作しませんでした。
私の実行の仕方に問題があるのかも知れませんが、
正直スキルがそこまでスキルが高くなくて分かりませんでした。
また何かヒントがありましたら、よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- その他(セキュリティ) PDFファイルのパスワード設定について 1 2022/06/25 10:10
- その他(開発・運用・管理) Python CSVファイルについて 2 2023/01/04 21:19
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- XML PHP.laravelについて 1 2023/07/06 15:26
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
jslintのエラーについて質問
-
getElementByIdを使用したグロ...
-
jQueryの :not() .not() が有効...
-
ASP.NET MVCでObjectをjsに渡す
-
C#テキストボックスの文字を配...
-
JavaScript window.openで開く...
-
Vb.netのグローバル変数の宣言...
-
C# 演算 奇数と偶数 表現の仕方
-
C#OpenCv V4にのエラーに関する...
-
【Jquery】changeイベント毎にa...
-
google apps scriptの終了のさせ方
-
JavaScriptでテーブル内?に矢...
-
二次元配列の全要素の全要素を...
-
ローカルにあるファイルを検索...
-
同じIDで定義した要素の配列を...
-
javascriptでCSVを呼出しvlookup
-
C#で、ContextMenuStripに動的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
関数でy=g(x)のgとは何の略です...
-
jslintのエラーについて質問
-
クリックすると上に開くアコー...
-
XMLHttpRequestでキャッシュを...
-
要素名がスペースを含む場合のj...
-
function(e)の意味を教えてくだ...
-
ajax反映後のjqueryが動かない
-
jQueryの :not() .not() が有効...
-
jQueryでzipを解凍読み込みする...
-
getElementByIdを使用したグロ...
-
関数名をテキストから読み込む...
-
jqueryuiのdialog
-
XMLHttpRequestオブジェクトが...
-
jqueryのグローバル変数とロー...
-
jQuery 同じ処理を関数にまとめ...
-
drawImageの描画順序の指定につ...
-
addEventListener()でリスナー...
-
jQueryが読み込めない
おすすめ情報