Flex 3でリモートファイルの存在を確認する
-
05-07-2019 - |
質問
Flex 3 / AS 3では、リモートファイルが存在するかどうかを確認する良い方法は何ですか? 私はあなたが" fopen"しようとするPHPの方法で考えています。リモートパス(" http://example.com/somefile.exe "など)、動作するかどうかを確認します。すべてのファイルをダウンロードするだけでなく、ファイルがそこにある(そしてアクセスできる)かどうかを知りたいだけです。
解決
おそらく、ファイルのロードを試行する必要があります。 IOErrorが発生した場合、ファイルは存在していません(またはパスが間違っています)。ロードを開始すると、progressイベントをトリガーして存在します。その後、ロードの残りをキャンセルできます。
代わりに、説明したことを実行するPHPスクリプトをFlashから呼び出すこともできます。これにより、単純なtrue / falseが返されます。
他のヒント
これは、仕事のために見つけた最高のコードです
var urlStream:URLStream = new URLStream();
urlStream.addEventListener(Event.OPEN, streamHandler);
urlStream.addEventListener(IOErrorEvent.IO_ERROR, streamHandler);
urlStream.load(new URLRequest("SOME_FILE"));
function streamHandler(e:Event):void {
urlStream.close();
if(e.type == Event.OPEN){
trace("FILE EXISTS");
} else if(e.type == IOErrorEvent.IO_ERROR){
trace("FILE DOES NOT EXIST");
}
}
ファイルが存在するかどうかを確認するために、私が開発したユーティリティクラスがあります。コードは次のとおりです。 https:// github。 com / eladelrom / eladlib / blob / master / EladLibFlex / src / com / elad / framework / utils / FileExistsUtil.as
実装は次のようになります。
var fileExists:FileExistsUtil = new FileExistsUtil();
fileExists.checkFile("file.jpg",
function(eventType:String):void
{
trace(eventType);
},
function(errorType:String, text:String):void
{
trace(errorType+": "+text);
});
所属していません StackOverflow