file_get_contentsで画像やFlashを表示とか
「目から鱗」というか何というか、こういう使い方をしたことがなかったので、メモとして残しておく。
経緯
詳細は省くけど、
- ある条件によって表示するものを変える
- リダイレクトはなしよ
というのをやりたくて、何だか簡単にできそうで、でもうまいことできなくて困っていた。
そんな時、大先輩に『それ、file_get_contentsでできるよ』とアドバイスをいただき、無事に解決。
いやぁ、すごく助かった。感謝感謝。
マニュアルを確認
PHPマニュアルのfile_get_contents
file_get_contents ― ファイルの内容を全て文字列に読み込む
今まで、↑の説明のとおりの使い方しかしてなかった。
注意: この関数はバイナリデータに対応しています。
でも、今回は↑にあるように、画像(jpg)とかFlash(swf)とかを読み込んで表示させるのに使用した。
処理の流れ
実際の処理の流れとしては、
- ファイルを読み込む
- ヘッダを指定する("Content-type"とか)
- 出力する
こんなもん。
サンプル
以下にサンプルコードを載せておく。
- 画像
<?php // 読み込むファイルを指定 $uri = './hoge.jpg'; // headerを指定 $size = filesize($uri); header("Content-Length: $size"); header("Content-type: image/jpeg"); // ファイルを出力 echo file_get_contents($uri);
<?php // 読み込むファイルを指定 $uri = './fuga.swf'; // headerを指定 $size = filesize($uri); header("Content-Length: $size"); header("Content-type: application/x-shockwave-flash"); // ファイルを出力 echo file_get_contents($uri);
こんな感じでできる。