ダウンロードするデータを動的に作成する

広告

今まではダウンロードするファイルをファイル名で指定してきました。ここではクライアントに送信したいデータを直接作成して送信する方法を確認します。HTTP_Downloadクラスのコンストラクタの引数の中の「data」で指定します。

require_once("HTTP/Download.php");

$params = array(
  "contenttype" => "text/plain",
  "contentdisposition" => array(HTTP_DOWNLOAD_ATTACHMENT, "filename"),
  "data" => "download data text"
);
$download = new HTTP_Download($params);
$download -> send();

今までダウンロードファイル名を指定してきましたが、代わりにクライアントに送信したいデータを直接「data」に設定しています。

また送信するデータを設定するメソッドも用意されています。HTTP_Donwloadクラスで用意されている「setData」メソッドを使います。

引数:
  $data  送出する文字列と同様の任意データ、もしくはクリアするための null

引数にはクライアントに送出するデータを設定します。

使い方としては次のようになります。

require_once("HTTP/Download.php");

$params = array(
  "contenttype" => "text/plain",
  "contentdisposition" => array(HTTP_DOWNLOAD_ATTACHMENT, "filename")
);
$download = new HTTP_Download($params);
$download -> setData("download data text");
$download -> send();

サンプルプログラム

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

sample9-1.php

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

$params = array(
  "contenttype" => "text/plain",
  "contentdisposition" => array(HTTP_DOWNLOAD_ATTACHMENT, "pass.txt")
);
$download = new HTTP_Download($params);
$download -> setData("あなたのパスワードは xxxx です");
$download -> send();

?>

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

download9-1.html

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

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

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

</body>
</html>

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

ダウンロードするデータを動的に作成する

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

ダウンロードするデータを動的に作成する

ファイル名を指定した場合と同じようにダウンロードダイアログが表示されます。ではダウンロードされたファイルをテキストエディタで開いて下さい。

ダウンロードするデータを動的に作成する

ダウンロード時に作成したデータをいったんファイルに保存せずに直接ファイルとしてクライアントへ送信することが出来ました。

( Written by Tatsuo Ikura )