Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2002/02/10

counter hits
since 1999/11/06


圧縮ファイルの作成&ダウンロード

alertここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。

zip形式 tgz形式

memoPHP3の頃にもあったネタですが、PHP4.xでも基本的には同じです。

zlib圧縮関数を使って圧縮したデータファイルを作成し、ダウンロードさせるサンプルです。上のリンクからtgz、zipの各家意識でダウンロードできるようにしています。

zlib圧縮関数を使用するには、zlib 1.0.9 以上をインストールしておく必要があります。また、PHPのconfigure時に「--with-zlib」オプションを付けます。再install後、phpinfoを実行し、サポート状況を確認しておきます。

phpinfo画面

cautionzlib-1.1.3には(確か)セキュリティーホールがありますので、最新版を使用するようにしましょう。

今回のサンプルでは、別途公開しているJDBC風Oracleアクセスクラスを使ってタブ区切りデータを作成しています。

●zlib.phpの抜粋

<?php
    // CSV作成開始
          :

    // テンポラリファイル名
    $filename = tempnam ('/tmp', 'test').'.dat.gz';

    // ダウンロードファイル名
    $dl_filename = 'test.dat.gz';

    // 最大限の圧縮を指定して書きこみ用にファイルをオープン
    $zp = gzopen($filename, "w9");

    // 文字列をSJISに変換し、ファイルに書きこむ
    gzwrite($zp, mb_convert_encoding($data, "SJIS"));

    // ファイルを閉じる
    gzclose($zp);

    // ダウンロード開始
    header("Content-disposition: attachment; filename=$dl_filename");
    header("Content-type: application/octet-stream; name=$dl_filename");
    $fp = fopen($filename, "r");
    echo fread($fp, filesize($filename));
    fclose($fp);

    // テンポラリファイルを削除
    unlink ($filename);
?>



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2002 by Hideyuki SHIMOOKA all rights reserved.