Flex 3 ローカルで開いた swf からは URLLoader でローカルファイルが取得できた件

Flex Builder なんかで普通に Flex アプリケーションを作って実行すると、ブラウザの URL が「file:///C:/ ・・・」となりますよね。要するにファイルシステム経由で単に SWF ファイルを開いただけということです。

このときに URLLoader を使って、例えば C:\Temp\sample.xml のようなファイルを「file:///C:/Temp/sample.xml」として取得できることがわかりました。

Web サーバー上にデプロイして実行した場合、クロスドメインアクセスが基本的には許されないのでそのドメイン内の URL にしかアクセスできなくなります。

ローカルで開いた場合は特にパスなどの制約なく実行できるようです。

var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("file:///C:/Temp/sample.xml");
request.method = URLRequestMethod.GET;
loader.load(request);

これにより REST 形式の Web サービスのクライアントアプリなんかを作る場合、サーバーのレスポンスを XML ファイル化してローカルのみで動くモックと実際の動作環境用とで SWF ファイルを同一にすることも可能だということです(Application.application.url でスイッチさせる)。

一般的にこれが周知な事実かどうかはよくわかりませんが、自分としては良い収穫でした。