情報をブラウザに表示する代わりに、
「ファイルのダウンロード」ダイアログを表示するサンプルです。
<?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」と書く必要があります。
(first uploaded 2010/05/01 last updated 2010/05/01, URANO398)
|