[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 メーリングリストの案内