2010年3月23日火曜日

 

【PHP】動的に生成した画像を保存する時に指定したファイル名にする

GDとかImagickとかで画像を動的に作って表示させる時、PHPファイルが、例えば「image.php」だとユーザが右クリックして画像を保存しようとするとファイル名もそのままで困る。リネームすれば大丈夫だろうけど優しくない。
header()」で以下の様に指定できる。

/* PHPファイルで画像データを出力する時のヘッダ */

header("Content-Type: image/jpeg");
header("Content-Disposition: inline; filename=foo.jpg");

当然のようにIE6だと駄目らしい。E6 は、Content-Type: ヘッダーではなくファイル名(拡張子)でファイルの種別を判断するというバグがあるということで、偽装すると大方は上手くいく。

<img src="http://example.com/image.php/foo.jpg?id=1">

foo.jpg」以下は「$_SERVER['PATH_INFO']」 で取得可能。

「.htaccess」でファイル名をリネームする方法。

/* PHPファイルを画像ファイルにリネームする「.htaccess」 */

RewriteEngine on
RewriteBase /
RewriteRule ^gazou_([0-9]+)¥.jpg gazou.php?id=$1 [L]

参考元の質問者は解決してないので、バージョン等にもよるのだろう。
header()」の前に出力があると、画像として認識されずテキストが表示される。なのでXREAサーバ(広告有)だと無理。

ラベル:


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google