• 締切済み

複数ファイルのダウンロード

PHPで複数のログファイルをダウンロードしたいときはどのようにしたらよいのでしょうか? ログファイルは下記のような形式です。 test_20041001,test_20041002,・・・,test_2004_1031 以前までは、DBから取得したデータをタブ区切りで表示したものを .xlsファイルでダウンロードしていました。 そのときのやり方としては、 //---------------------------------- //ファイルダウンロード //---------------------------------- $fSize = $Sec->getFileSize(ADMIN_RESERVECSV_PATH); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . PATH); header("Content-Length: " . $fSize['B']); readfile(PATH); というような方法です。

  • PHP
  • 回答数2
  • ありがとう数3

みんなの回答

  • sisya
  • ベストアンサー率39% (97/245)
回答No.2

ファイル名を渡してファイルをダウンロードさせる処理を行う 別ウインドウを開いてみてはいかがでしょうか? 別ウインドウなら複数開くことができるので、 複数のファイルをダウンロードさせる事ができると思います。 ただ、ダウンロードさせるべきファイルかどうかを きちんと判定しないと、不正なダウンロードの的になってしまうので、 注意が必要かもしれません。

aiurai54
質問者

お礼

ありがとうございます。

  • bonyamk
  • ベストアンサー率29% (49/166)
回答No.1

もしサーバがunixやlinuxであればtarとgzipを利用してみてはどうでしょう? この2つのプログラムは普通入ってるのでpathがわからなければ管理者に聞いてみるといいでしょう windows系のサーバだと、、、ごめんなさい、わかりません^^;

aiurai54
質問者

お礼

ありがとうございます。

関連するQ&A

  • 圧縮ファイルのダウンロード

    現在ログをダウンロードするプログラムを作成しています。 ログを1つのファイルとしてあつかうため、 それぞれのログを ftp_fget関数で1つのファイルにまとめました。 ここまではうまくいってるのですが、容量が大きいため 圧縮せざるをえないと重い。 system('/usr/local/bin/zip '.$fileName.'.zip '.$fileName); 上記のシステムコマンドでファイルを圧縮しました。 15MBのファイルが2MBまで落ちましたが、 これをダウンロードしようとするとうまくいきません。 ダウンロードのやり方は下記のようなやり方です。 header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . $all_data['fileName']); header("Content-Length: " . $fSize['B']); readfile($all_data['fileName']); このような方法でダウンロードしようとすると、何故か688バイト分くらいしかとってきてくれません。 何か原因があるのでしょうか? どなたかご教授お願いいたします。

    • ベストアンサー
    • PHP
  • fileのダウンロードとページ移動を続けて行うには?

    初心者です。教えて頂けますか? フォームのボタンを押したらダウンロードする様に作りました。 ボタンを押したらダウンロードとページ移動を続けて行うには どの様にすれば良いでしょうか? header( "Content-Type: application/octet-stream" ); header( "Content-Disposition: attachment; filename=$contentFilePath" ); header( 'Content-Length: '.filesize($contentFilePath) ); readfile($contentFilePath);

    • ベストアンサー
    • PHP
  • PHPでのファイルダウンロードについて

    初めて質問させていただきます。 社内用でファイルのアップロード・ダウンロードができるシステムを開発しています。 PCからは問題なくアップロードもダウンロードも行えていたのですが、 スマホからアクセスしてダウンロードをすると失敗してしまいます。 下記のコードを使ってます。 ファイルの種類はいろいろなので、「application/octet-stream」にしてます。 が、それぞれのファイルタイプに合わせて変更させても状況は変わりませんでした。 -- header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); header('Content-Length: '.filesize($dl_file)); readfile($dl_file); exit; -- なにか解決策があるようでしたら、教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでファイルをダウンロードさせるコード

    PDFファイルをその場では開かせず、ダウンロードさせるコードを作成しています header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($path_file) . '"'); header('Content-Length:' . $content_length); ファイルをダウンロードさせること自体は成功しており、ファイル容量も間違ってないのですが ダウンロード後に開こうとするとファイルが破損していて開くことができません。 また、ハイパーリンクから直接開かせた場合は問題なく表示できております。 原因の分かる方がいらっしゃいましたらアドバイスお願い致します。

    • ベストアンサー
    • PHP
  • excelファイルのダウンロード

    サーバーに配置してある、excelファイルをダウンロードさせ、 ダウンロードしたファイルを開こうとすると 「開こうとしているファイル 'xxxxxxxx' の形式は、ファイル拡張子が示す形式と異なります。 このファイルを開く前に、ファイルが破損していないこと、信頼できる発行元からのファイルであることを確認してください。 ファイルを今する開きますか? 」 というポップアップが表示され、「はい」をクリックして表示すると文字化けしています。 ソースは以下のように書いています。 どこが問題なのか、教えていただければと思います。 よろしくお願いします。 $file = excelファイルのフルパス header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=sample.xls'); header('Content-Transfer-Encoding: binary'); header('Content-Length:' . filesize($file)); header('Pragma: no-cache'); header('Cache-Control: no-cache'); readfile($file);

    • ベストアンサー
    • PHP
  • PHPで複数ファイルのダウンロード

    はじめまして、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つ目以降のファイルをダウンロード するには、どうすればいいのでしょうか?

    • 締切済み
    • PHP
  • IEだと・・・だめなんです

    Zipファイルに固めてダウンロードさせようとしているのですが、Firefoxだとダウンロードできて、IEだとエラーが出てこけてしまいます。 まず、Header部分が原因だと思うのですが、原因分かる方いらっしゃいますか?教えてください。 header("Content-type: application/octet-stream"); header('Content-Disposition: attachment; filename="' . zip_file_name . '"'); header("Content-length: " . filesize($zip_file_name)); readfile($zip_file_name);

    • ベストアンサー
    • PHP
  • ファイルのダウンロードが出来ない

    こんばんは。お世話になっております。 CSVファイルをダウンロードさせるスクリプトを作成したのですが、そのスクリプト(ファイル)を、さくらインターネットのサーバへアップすると「ダウンロードせずにブラウザに表示されるだけ」という状態になってしまいます。(ローカル上や別サーバでは問題ない) ファイル上に記述する、Headerですが、サイトによっていくつかの記述方法があったので、以下のように2種類のHeaderを試していますが、共に「さくらインターネットだけがダウンロードしない」状況です。 ファイルをダウンロードさせるスクリプトは、今回初めて作ってみたのですが、他にどのような対処法があるのかが分かりません。考えられる可能性だけでも結構ですので、アドバイスいただけると幸いです。 //Header("Content-type:application/x-csv;"); //header("Content-Disposition: inline; filename=$fname.csv"); header("Content-Type: application/octet-stream;"); header("Content-Disposition: attachment; filename=$fname.csv"); 以上、お忙しい中恐縮ですが宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • ダウンロードさせると*.phpにリネームされてしまう。

    phpでファイルのダウンローダを作成したのですが、IEで動かすと*.phpと動作しているphpのスクリプトネームにリネームされてしまいます。 FireFoxではリネームされる事無くダウンロードされるのですが、IEでの解決方法をご存知の方、どうぞご教授くださいませ。 コードは $filesize=filesize($filedldir); header ("Accept-Ranges: none"); header ("Content-Length: $filesize"); header ("Content-Type: application/octet-stream"); header ("Content-Disposition: attachment; filename=$fnames"); readfile ($filedldir); exit; といった感じです。 何がおかしいのでしょうか?

    • ベストアンサー
    • PHP
  • 動画をダウンロードするとサイズ0で終了する

    動画をダウンロードするとサイズ0となってしまいます。   動画:AVI、サイズ:122MB プログラムは <?php $file = "".$_GET["id"].".avi"; $file_length = filesize($file); header("Content-Disposition: attachment; filename=$file"); header("Content-Length: $file_length"); header("Content-Type: application/octet-stream"); readfile ($file); ?> で、ファイル名は正常に受け渡されています。 また、サイズも表示させたとこころ正常値でした。 ちなみに、サイズ19MBのAVIで試したところ、正常にダウンロード できました。 サイズの問題だと思うのですが、対応方法をお教え下さい。 宜しくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう