PEAR::HTTP_Download がなかなか良い

WEBアプリでファイルのダウンロード機能を持たせたいときに、MIMEヘッダをブラウザ毎に調べて微調整するのが非常に面倒くさい。
ブラウザ毎の違いで実装を微調整するのは技術的にあまり面白く無い。でもこの退屈な作業はライブラリが吸収してくれないかなと思って探したら、いいのがあったのでメモ。

  • インストール
# pear install --alldeps HTTP_Download
  • 使い方

email ファイルのダウンロードならこんな感じ

require_once("HTTP/Download.php");

$params = array(
  "data" => $data
  "contenttype" => "message/rfc822",
  "contentdisposition" => array(HTTP_DOWNLOAD_ATTACHMENT, "12345.eml")
);
$download = new HTTP_Download($params);
$download -> send();
  • オプション一覧
オプション 説明
file ファイルパスを指定
data 生データを指定
resource リソースハンドルを指定
gzip gzip ダウンロードを行うかどうかを指定
cache ダウンロードするものをクライアント側に キャッシュさせるかどうかを指定
lastmodified 最終更新日時の UNIX タイムスタンプを指定
contenttype Content-type を指定
contentdisposition Content-disposition を指定
buffersize ファイルやリソースから 一度に読み込むバイト数を指定
throttledelay 各チャンク送出後の停止秒数を指定
cachecontrol キャッシュのプライバシーと妥当性を指定

参考URL: Manual :: HTTP_Download