[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/