ファイルのダウンロードダイアログを出す

情報をブラウザに表示する代わりに、 「ファイルのダウンロード」ダイアログを表示するサンプルです。

<?php
$sampleData = "TB00123\r\n" .
  "日本語データ1\r\n" .
  "0102030405\r\n" .
  "日本語データ2\r\n" .
  "0102030406\r\n";

$defaultFileName = "data.txt";

header("Content-Type:application/octet-stream");
header("Content-Disposition:attachment; filename=\"". $defaultFileName ."\"");
//header("Content-Length:" . strlen($sampleData));
print $sampleData;
?>

方法は簡単で、上のようにheader関数でContent-Type に「application/octet-stream」を、 Content-Dispositionに「attachment」を指定します。 また、Content-Lengthも指定できるのであれば指定すれば、 大きなファイルの際に、 ブラウザがユーザにプログレスバーを表示してくれる可能性が高くなります。

ちなみに上の例で本題と関係ありませんが、 改行文字を「\n」で表現するとLF(UNIXの改行コード)になります。
C言語のように、PHPのサーバOSがWindowsであっても、 自動でCR+LF(Windowsの改行コード)になったりはしません。(Javaと同じ)
CR+LFにするなら「\r\n」と書く必要があります。

Open Source Web Architecture Top

(first uploaded 2010/05/01 last updated 2010/05/01, URANO398)

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル