[PHP-users 10059] ファイルを連続でダウンロードする方法。

aiko php-users@php.gr.jp
Thu, 12 Sep 2002 08:56:07 +0000


こんにちは。aikoと申します。
ファイルのダウンロードを連続して行う方法(複数ファイルをダウンロードする方
法)
について教えて頂きたいと思いメールしました。


◆ダウンロード
**************** ↓ dwnload.php	 ↓**********************
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=SHIFT_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>filedownload</title>
<script language="JavaScript">
<!--
submitData()
{
		document["input"].action = dwnload_data.php;
		document["input"].method = "POST";
		document["input"].submit();
}
-->
</head>
<body>
	<form name="input">
	<center>
		<br>
		File Name <INPUT NAME="dwnloadfile" type="text" size="50" value = 
"dwnload1111.txt">
		<br>
		<input type="button" name = "sendfile" value="download" 
onClick="submitData();">
	</center>
	</form>
</body>
</html>

**************** ↓dwnload_data.php	↓**********************
<?php

	$path_file = trim( $_POST["dwnloadfile"]);
	$filename = basename($path_file);

    // ファイルの存在確認
	@file_exists( $path_file ) or die("Error: File[ ".$path_file." ] does not 
exist");

	// ファイルサイズの確認
	$content_length = @filesize( $path_file ) or die("Error: File size is 
0.[".$path_file."]");

	// ファイルダウンロード処理   
	// キャッシュを無効にする
	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");             // Date in 
the past
	header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always 
modified
	header("Cache-Control: no-cache, must-revalidate");           // HTTP/1.1
	header("Pragma: no-cache");                                   // HTTP/1.0

	// ダウンロード用のHTTPヘッダ送信
	$path_file = i18n_convert( $path_file, EUC );
	$filesize = filesize( $path_file );
	header( "Accept-Ranges: none" );
	header( "Content-Length: $filesize" );
	header( "Content-Disposition:inline; filename=\"$filename\"" );

	header( "Content-Type: text/octet-stream" );// IE
	
	// ファイルを読んで出力 
	$fp = @fopen( "$path_file", "rb" ) or die("Error: Cannot open the 
file(".$path_file.")");
	@fpassthru( $fp ) or die("Cannot read the file(".$path_file.")");
?>
*********************************************************


このような感じで指定した1つのファイルをダウンロードすることはできました。
複数ファイルをダウンロードするには、dwnload.php画面で複数ファイル名を入力し
て、
dwnload_data.phpでダウンロード用ヘッダを複数回送信してあげればよいのかなとも
思ったのですが、

1回目のダウンロードが終了した時点でウィンドウズ専用のダイアログで、フォルダ
を開く・ファイルを開く・閉じる
と聞かれてしまい、どれを選択してもその後の処理が進みません。
(ちなみに、この方法では正常なダウンロード動作を行っていないようです。
一回目のダウンロードファイルにエラーメッセージが書かれていました)

ダイアログのイベントが(フォルダを開く・ファイルを開く・閉じるボタン押下時
の)取れれば、その後、2番目のファイルをダウンロードする
という処理が続けて行える気もしますが。
方法もやり方も分かりません。


どなたか分かる方いらっしゃいましたら、ご助言していただきたいです。
よろしくお願いします。


ファイルではなくてフォルダごとダウンロードする方法があれば簡単な話???
(しかもこういうやり方ってあるのですか?(アップロードに関しても)←聞いたこ
とない気がしますが。)





_________________________________________________________________
キャリアアップを目指すあなたのナビゲーター MSN 就職・転職 
http://career.msn.co.jp/