データのロード

SWF ファイルはサーバーから ActionScript 内にデータをロードでき、ActionScript からサーバーにデータを送信できます。データのロードはメディアのロードとは異なる種類の操作です。なぜなら、ロードされた情報は、メディアとして表示されず、ActionScript 内で直接表示されるからです。一般に、SWF ファイルは、それ自体のドメインからデータをロードできます。しかし、他のドメインからデータをロードするためには、通常ではクロスドメインポリシーファイルが必要になります。

サブトピック

URLLoader と URLStream の使用
ソケットへの接続
データの送信
ファイルのアップロードとダウンロード

URLLoader と URLStream の使用

データは、XML ファイルまたはテキストファイルとしてロードできます。URLLoader クラスと URLStream クラスの load() メソッドは、クロスドメインポリシーファイルの許可により制御されます。

load() メソッドを使用して、このメソッドを呼び出している SWF ファイルのドメイン以外のドメインからコンテンツをロードする場合、Flash Player はロードされるアセットのサーバー上にクロスドメインポリシーファイルがあるかどうかをチェックします。クロスドメインポリシーファイルが存在し、そのファイルでロードする側の SWF ファイルのドメインにアクセスが許可されている場合は、データをロードできます。

ソケットへの接続

デフォルトでは、ソケットおよび XML ソケット接続へのクロスドメインアクセスは無効になっています。また 1024 未満のポートでは、SWF ファイルと同じドメインでのソケット接続へのアクセスは、デフォルトで無効に設定されています。これらのポートへのアクセスは、次の場所のいずれかに所属するクロスドメインポリシーファイルを使用することで許可できます。

メインソケット接続と同じポート、または別のポートからクロスドメインポリシーファイルを提供する場合、次の例に示すように、クロスドメインポリシーファイル内で to-ports 属性を使用して許可されるポートを列挙します。

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <!-- xmlsocket://socks.mysite.com のポリシーファイル --> <cross-domain-policy> <allow-access-from domain="*" to-ports="507" /> <allow-access-from domain="*.example.com" to-ports="507,516" /> <allow-access-from domain="*.example.org" to-ports="516-523" /> <allow-access-from domain="adobe.com" to-ports="507,516-523" /> <allow-access-from domain="192.0.34.166" to-ports="*" /> </cross-domain-policy>

メインソケット接続と同じポートからソケットポリシーファイルを取得する場合、Socket.connect() メソッドまたは XMLSocket.connect() メソッドを呼び出します。また指定されたドメインが呼び出した SWF ファイルのドメインと異なる場合、取得を試みているメイン接続と同じポートからのポリシーファイルの取得が自動的に試みられます。メイン接続と同じサーバー上で別のポートからソケットポリシーファイルを取得するには、次のように特殊な "xmlsocket" シンタックスを使用して、Security.loadPolicyFile() メソッドを呼び出します。

Security.loadPolicyFile("xmlsocket://server.com:2525"); 

Socket.connect() メソッドまたは XMLSocket.connect() メソッドを呼び出す前に、Security.loadPolicyFile() メソッドを呼び出してください。その場合、Flash Player は、ユーザーのメイン接続を許可するかどうかを決める前に、ユーザーのポリシーファイル要求が満たされるのを待ちます。

ソケットサーバーを実装し、ソケットポリシーファイルを提供する必要がある場合は、ポリシーファイルを提供するのに、メイン接続を受け入れるのと同じポートを使用するか、それとも別のポートを使用するかを決めてください。いずれの場合も、サーバーはポリシーファイルを送信するか、メイン接続を確立するかの決定の前に、クライアントからの最初の送信を待機する必要があります。Flash Player は、ポリシーファイルを要求する場合、接続が確立されると同時に、必ず次のストリングを送信します。

<policy-file-request/>

サーバーはこの文字列を受信すると、ポリシーファイルを送信できます。同じ接続をポリシーファイル要求とメイン接続の両方に再使用しないでください。ポリシーファイルの送信後は、接続を閉じてください。そのようにしなかった場合、Flash Player はポリシーファイル接続を閉じてから、再接続してメイン接続を設定します。

詳細については、ソケットポリシーファイルを参照してください。

データの送信

データ送信が行われるのは、SWF ファイルの ActionScript コードによりサーバーまたはリソースにデータが送信されるときです。データの送信は、ネットワークドメイン SWF ファイルで常に実行できます。ローカル SWF ファイルは、その SWF ファイルが local-trusted サンドボックスまたは local-with-networking サンドボックスに入っている場合にのみ、ネットワークアドレスにデータを送信できます。詳細については、ローカルサンドボックスを参照してください。

flash.net.sendToURL() 関数を使用すると、URL にデータを送信できます。それ以外のメソッドも、URL に要求を送信します。それらのメソッドとしては、Loader.load()Sound.load() などのロードメソッドと、URLLoader.load()URLStream.load() などのデータロードメソッドがあります。

ファイルのアップロードとダウンロード

FileReference.upload() メソッドは、ユーザーによって選択されたファイルのリモートサーバーへのアップロードを開始します。FileReference.upload() メソッドを呼び出す前に、FileReference.browse() メソッドまたは FileReferenceList.browse() メソッドを呼び出す必要があります。

FileReference.download() メソッドを呼び出すと、ユーザーがリモートサーバーからファイルをダウンロードできるダイアログボックスが開きます。

メモ

 

サーバーでユーザー認証が必要な場合、ブラウザ内で実行される、つまり、ブラウザプラグインまたは ActiveX コントロールを使用する SWF ファイルでのみ、認証用のユーザー名とパスワードをユーザーが入力できるダイアログボックスを表示できます。ただし、それはダウンロードの場合のみです。Flash Player では、ユーザー認証が必要なサーバーへのアップロードはできません。

呼び出しを行う SWF ファイルが local-with-filesystem サンドボックス内にある場合、アップロードとダウンロードは許可されません。

デフォルトでは、SWF ファイルは、それ自体のサーバー以外のサーバーとの間でアップロードまたはダウンロードを行うことはできません。SWF ファイルは、別のサーバーへのアップロードまたはダウンロードが可能ですが、そのサーバーに、呼び出し側 SWF ファイルのドメインに許可を与えるクロスドメインポリシーファイルが格納されている必要があります。


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000356.html