クライアントへファイルを送信する

広告

HTTP_Downloadクラスのオブジェクトを作成したらクライアントに対してファイルを送信します。HTTP_Downloadクラスで用意されている「send」メソッドを使います。

引数:
  $autoSetContentDisposition  trueの場合、HTTP_DOWNLOAD_ATTACHMENTヘッ
    ダにContent-Disposition がセットされていない場合、自動的にセットし
    ます
戻り値:
  成功時にはTRUE、失敗時にはPEAR_Errorを返します

「send」メソッドを実行する前にHTTP ヘッダがすでに送出されているとエラーとなります。実際の使い方は次のようになります。

require_once("HTTP/Download.php");

$params = array(
  "file" => "./downloadfile.txt"
);
$download = new HTTP_Download($params);
$download -> send();

サンプルプログラム

では簡単なサンプルで実際に試してみます。

sample4-1.php

<?php
require_once("HTTP/Download.php");

$params = array(
  "file" => "./download/star.png"
);
$download = new HTTP_Download($params);
$download -> send();

?>

ダウンロード用PHPを呼び出すためのHTMLファイルを用意しました。

download4-1.html

<html>
<head><title>PHP TEST</title></head>
<body>

<p>ダウンロードテスト</p>

<p>
<a href="./pearhttpdownloadtest1.php">ダウンロード</a>
</p>

</body>
</html>

ダウンロードするファイルはPHPファイルが置かれているディレクトリに「download」と言うディレクトリを作成し、その中に「star.png」ファイルを置いておきました。

ではダウンロード用HTMLファイルをWWWサーバに設置しブラウザで見てみると下記のように表示されます。

クライアントにファイルを送出する

「ダウンロード」と書かれたリンクをクリックして下さい。

クライアントにファイルを送出する

上記のようにダウンロード用ダイアログが表示され、ダウンロードを行うことができます。

staticSendメソッド

単にファイルをダウンロードする場合であれば、HTTP_Downloadクラスのオブジェクトを作成して「send」メソッドを実行する代わりにクラスメソッドである「staticSend」メソッドを呼び出すことでも同様のことが行えます。

引数:
  $params  パラメータの連想配列
  $guess  guessContnentType() をコールするかどうかを指定
戻り値:
  成功時にはTRUE、失敗時にはPEAR_Errorを返します

引数にはHTTP_Downloadクラスのコンストラクタで指定するパラメータと同等の連想配列を指定します。例えば次のように記述します。

<?php
require_once("HTTP/Download.php");

$params = array(
  "file" => "./download/star.png"
);
HTTP_Download::staticSend($params);

?>

単にファイルをダウンロードさせるだけであればどちらを使っても同じです。

( Written by Tatsuo Ikura )