「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 関数でもダウンロード問い掛けを出来ます。