アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして、PHPについて質問させていただきます。

PHPでファイルを複数ダウンロードできるようしたいと思っています。
色々調べ、header関数を使用し、以下のように記述すると
ファイルのダウンロードは成功しました。

/*****************************************/
// ダウンロードさせる元ファイル(絶対パス)
$filepath = 'test_01.pdf';
// 保存時のファイル名(デフォルト)
$filename = 'download001.pdf';

// HTTPヘッダ送信
header("Content-length: " . filesize($filepath));
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=\"{$filename}\"");
// ファイルを読み込んで出力
readfile($filepath);
/*****************************************/

一つのファイルのダウンロードに成功したので、
次に複数のファイルを順番にダウンロードをさせる為にループ処理をしました。

/*****************************************/
//配列 複数ファイル
$downfile = array("test_01","test_02","test_03");
//データ数
$max = count($downfile);

// ダウンロードさせるディレクトリ(絶対パス)
$filepath = "/home/sites/www.eshop-himawari.com/web/test_nihon/form_down/file/";

// 保存時のファイル名(デフォルト)
$filename = "download";
$filetype = ".pdf";
$kazu = 1;

//ループ処理
for( $i = 0; $i < count( $max ); $i++ ){
$downpath = $filepath.$downfile[$i].$filetype;
$filename = $filename.$kazu.$filetype;
$kazu = $kazu++;
// HTTPヘッダ送信
header("Content-length: " . filesize($downpath));
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=\"{$filename}\"");
// ファイルを読み込んで出力
readfile($downpath);
// $fp = fopen( "$downpath", "rb" );
// @fpassthru( $fp );
}
/*****************************************/

しかし実行すると最初のファイルはダウンロードしますが
2つ目からのファイルはダウンロードされませんでした。

きちんとループ処理をされて、2つ目以降のファイルをダウンロード
するには、どうすればいいのでしょうか?

A 回答 (1件)

ヘッダーを出した後にコンテンツを吐いているので、当然


その後のヘッダーは無視されるでしょう。
httpの仕組みから考えてもサーバーからの指示で2つダウンロードは
できません。
やるならjavascriptか何かで、繰り返し呼び出してください。
    • good
    • 0
この回答へのお礼

yambejp様
ご意見ありがとうございます。

javascriptでやってみます。
ありがとうございました。

お礼日時:2008/04/12 01:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!