「PHP/ファイル入出力」の版間の差分
削除された内容 追加された内容
概要 |
自動ダウンロード開始の方法 |
||
191 行
たとえローカルホストのアドレス名がたとえば http://localhost/catchTest.php のような末尾に「php」とついた形式であっても、表示されるコードは(PHPでなくて)html形式である。
== サーバーからのダウンロード ==
PHPでダウンロードをブラウザに問いかけるには、下記のように header 関数というのを使って、ブラウザに問い掛けできる。
;コード例
<syntaxhighlight lang="PHP">
<?php
// 画像のパスとファイル名 (拡張子ごと)
$fpath = "/var/www/html/phpgra2.png";
$fname = "phpgra2.png";
// ヘッダーの設定
header('Content-Type: application/octet-stream');
header('Content-Length: ' . filesize($fpath));
header('Content-Disposition: attachment; filename="' . $fname . '"');
// 画像のダウンロード
readfile($fpath);
?>
</syntaxhighlight>
書式は
<syntaxhighlight lang="PHP">
<?php
$パス変数 = "パスのアドレス";
$ファイル変数 = 'ファイル名';
header('Content-Type: application/octet-stream');
header('Content-Length: ' . filesize($パス変数));
header('Content-Disposition: attachment; filename="' . $ファイル変数 . '"');
readfile($パス変数);
?>
</syntaxhighlight>
です。
実験のさいには、あらかじめ画像データを作成しておいてください。
成功すれば、ページ起動時に
:「次のファイルを開こうとしています:」
と出て、「キャンセル」または「OK」のボタンが出てきます。
Content-Type: application/octet-stream の 「octet-stream 」はバイナリデータであることを宣言しています。画像データなどをダウンロードさせたい場合は画像はバイナリ形式ですので、この 「octet-stream 」を指定する必要があります。
readfile関数でなくても、 file_get_contents 関数でもダウンロード問い掛けを出来ます。
|