いつもお世話になります。
WebサーバーのCSVをダウンロードするのに次のようなCCGIを使っています。
*****************************************
#! /usr/bin/perl
open FH, "./data.csv";
print <<__EOH__;
Content-Type: text/download; name="data.csv"
Content-Disposition: inline; filename="data.csv"
__EOH__
print <FH>;
close FH;
*****************************************
1つだけならこれでOKなんですが、例えばdata1.csv、data2.csv、data3.csvという3つのCSVをダウンロードさせるにはどのようにコーディングすればよいのでしょう?
No.1ベストアンサー
- 回答日時:
1つのコネクションで送信できるファイルの数は1つだけです。
裏技を使えば1つのコネクションで3つ送信できますが、同時には無理です。
よって、window.open("download.cgi?file=data1.csv","_new"); という JavaScript を3回実行してしまう方法が一番確実でしょう。
お応えありがとうございます。
無理なら仕方ありません。そんなことが出来たらいいなぁ~と思っただけですから、ダウンロードしたいファイルの数だけボタンをつくります。
No.2
- 回答日時:
3つのファイルを1つに纏めて圧縮して1つのファイルにして、送るというのはできると思います。
下に挙げているのはウェブサーバがUNIXのマシン時の例です。
(ただし、SUNOSとSolarisではtarのオプションの関係でこのままでは動きません。)
------------------------------------------------
#送る3つのファイルの指定をしています
$DataFile1='aaa.dat';
$DataFile2='bbb.dat';
$DataFile3='ccc.dat';
#UNIXコマンドを呼び出して圧縮をかけています。
`tar zcvf tmp$$.tgz $DataFile1 $DataFile2 $DataFile3`
##ここから下は引用してます
open FH, "./tmp$$.tzg"; #書き換えました
print <<__EOH__;
Content-Type: text/download; name="data.csv"
Content-Disposition: inline; filename="data.csv"
__EOH__
print <FH>;
close FH;
##付け加え
`rm tmp$$.tgz`; #圧縮したファイルを消しています
------------------------------------------------
ただし、CSVファイルが大きすぎるて纏めて圧縮するのに時間のかかる大きなものであるばあい、ホストの負荷によっては、転送を開始するまでに時間がかかってタイムアウトする場合がありますので、注意が必要です。
おこたえありがとうございます。
>UNIXのマシン時の例です。
ホスティングサーバーを使用しています。多分UNIXサーバーだと思うのですが、私自身はUNIXの知識がありませんのでUNIXコマンドといわれても、はて???という感じです。せっかく教えていただいたのに知識がついていってません。すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- その他(開発・運用・管理) Python CSVファイルについて 2 2023/01/04 21:19
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- その他(プログラミング・Web制作) Sikulix2.0.5(Jython2.7.3)でcsvを読込WEB検索条件にpasteで文字化け 1 2023/03/31 11:02
- その他(ネットショッピング・通販・ECサイト) CSVファイルのアップロードについて ネッシーのCSVファイルをアップロードしたら PCのWPSスプ 1 2022/06/17 20:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
matlabで、平均値を求める方法...
-
メールアドレスをテキストファ...
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
【Excel VBA】10進数を2進数に...
-
バイナリとBCDコード
-
char str[256]の256の意味は?
-
ビットスワップとバイトスワッ...
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
Excel VBA メール作成について ...
-
htmlソース編集で、各タグを何...
-
DataGridViewの特定列に入力さ...
-
:(コロン)のKeyCode
-
Visual Basicでパック10進(2進...
-
日付時刻を4バイトに
-
postで送られてきたパラメータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MATLAB(マトラボ)とcsvファ...
-
matlabで、平均値を求める方法...
-
VBScripの2次元動的配列
-
VBA エクセルで1列で表示したい。
-
いつどこゲームのようなテキス...
-
文字型変数を使って2進数表示す...
-
複数のCSVを一度にダウンロード
-
VB6.0でMSChartをタイマーを使...
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
Excel VBA メール作成について ...
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
stable diffusionのエラー
-
COBOLのCOMP形式について
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
-
バイナリとBCDコード
-
バイト列とバイナリ列の違いが...
おすすめ情報