FlashでPerlを介した別ドメインのデータ取得方法(mimeType判別付き) +PHP版
Flashで別ドメイン(クロスドメイン)にある画像の表示方法(AS3.0)のポストの『3.ポリシーファイルの配置が不可能な場合』の部分で、mimeタイプをJpegに決め打ちしていたのが気になったので、変更対応したものを書いてみます。
ちなみに個人的に慣れてるperlを使ってみました。phpについては後半に記載しています。
1. Perl版
使用モジュール:
・ CGI
・ LWP::UserAgent
・ File::Basename
・ File::MMagic
use CGI qw(:cgi); use LWP::UserAgent; use File::Basename; use File::MMagic; my $cgi = new CGI; my $url = $cgi -> param( 'file' ); my $file = LWP::UserAgent -> new -> get($url) -> content; my $type = File::MMagic -> new -> checktype_filename( basename( $url ) ); print $cgi -> header( $type ); print $file; exit;
9行目で対象ファイルのデータを取得。
11行目のchecktype_filename関数ではURL形式では受け付けてくれないので、File::Basenameモジュールのbasename関数でファイル名(拡張子付き)を取得し与えています。
2. PHP版
<?php if( $_GET[ "file" ] ) { $type = mime_content_type( $_GET[ "file" ] ); header( "Content-Type: {$type};" ); readfile( $_GET[ "file" ] ); } ?>
ただ、mime_content_type関数が非推奨のようで、
PECL 拡張モジュール Fileinfoのfinfo_file関数 を使う方が良いそうです。
コメントはまだありません。