ファイル名を設定する

広告

ダウンロードされるファイルのファイル名の初期値を設定する方法を確認します。あくまで初期値であるため最終的にどのようなファイル名で保存されるかはクライアント側で指定ができます。設定するにはHTTP_Downloadクラスのコンストラクタの引数の中の「contentdisposition」で指定します。

require_once("HTTP/Download.php");

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

この項目については2つの値を必要とするため別の配列で値を設定します。この配列の1番目には「HTTP_DOWNLOAD_ATTACHMENT」を指定し、2番目にはダウンロードするファイルのファイル名を指定します。

またファイル名を設定できるメソッドも用意されています。HTTP_Donwloadクラスで用意されている「setContentDisposition」メソッドを使います。

引数:
  $disposition  ディスポジション
  $file_name  ダウンロードするファイルのファイル名

1番目の引数には「inline」か「attachment」を指定します。ただダウンロードさせるという場合には常に「HTTP_DOWNLOAD_ATTACHMENT」を指定しておけば問題無いと思います。2番目の引数にはファイル名を指定して下さい。

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

require_once("HTTP/Download.php");

$params = array(
  "file" => "./downloadfile.txt",
  "contenttype" => "text/plain"
);
$download = new HTTP_Download($params);
$download -> setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, "newname.txt");
$download -> send();

サンプルプログラム

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

sample6-1.php

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

$params = array(
  "file" => "./download/sample.txt",
  "contenttype" => "text/plain"
);
$download = new HTTP_Download($params);
$download -> setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, "test.txt");
$download -> send();

?>

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

download6-1.html

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

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

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

</body>
</html>

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

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

Content-Disposiotnの設定

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

Content-Disposiotnの設定

上記のようにダウンロード用ダイアログが表示されますが、ファイル名としては元のファイル名ではなく「setContentDisposition」メソッドで指定したファイル名が初期値として設定されています。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)