[PHP-users 21015]Re: チェックボックスで複数チェックしたものを一括してダウンロードさせる方法
SIN
sin @ vc-net.ne.jp
2004年 3月 27日 (土) 12:11:30 JST
こちらのMLでは初めての投稿となります。SINです。
In message "[PHP-users 21011] チェックボックスで複数チェックしたものを一括してダウンロードさせる方法"
YOSHIDA wrote. (2004/03/27 10:55:36)
> ある顧客のサイトで複数のPDFファイルをダウンロードさせる
> ページを作成しています。
> その顧客からファイル数がかなり多いためチェックボックスで
> チェックしたものを一度にダウンロードできるようにしてくれとの
> 要望がありました。
> そのようなことは可能なのでしょうか。
> 手順は下記の要領です。
>
> ファイルリストのページでダウンロードするものにチェック
> ↓
> ダウンロードするものの選択が終わったらダウンロードボタンをクリック
> ↓
> 保存ダイアログ(Macならそのままダウンロード)
同じような話題が以前にCGI-MLの方で出ていました。
考え方としては「複数のファイルを1つにまとめて1度にダウンロードさせる」か
「クライアントに複数のページに連続してアクセスさせる」のどっちかの
手法になるんじゃないかと思います。
前者としてはtarなりzipなりlzhなりといったアーカイバで連結する方法や、
base64エンコードした上でmultipart/mixed形式で出力する方法、
後者としてはフレームを使って複数のファイルへ同時にアクセスさせる方法や
同時が嫌ならRefreshも組み合わせて時間差にアクセスさせる方法、
他にJavaScriptのタイマーを使ってlocationを切り替えていく方法、
などが案として出されていました。
ちなみにJavaScriptのはこんな感じの案でした。
<script>
files = new Array();
files[0] = "file1.pdf";
files[1] = "file2.pdf";
interval = 5000; // ダウンロード開始間隔(msec)
TimerID = 0;
i = 0;
function download() {
clearTimeout(TimerID);
location.href = files[i];
if(i < files.length) {
i ++;
TimerID = setTimeout("download()", interval);
}
}
</script>
<a href="javascript:download()">DOWNLOAD</a>
これでDOWNLOADリンクをクリックすると、5秒間隔で
ダウンロードダイアログが開きます。
ヒントになれば幸いです。
PHP-users メーリングリストの案内