2009-07-30 9 views
2

In Flex 3/AS 3, was wäre eine gute Möglichkeit, um zu überprüfen, ob eine Remote-Datei existiert? Ich denke in PHP-Wege, wo Sie versuchen würden, einen Remote-Pfad "fopen" (wie "http://example.com/somefile.exe"), und sehen, ob es funktioniert oder nicht. Ich möchte nicht einfach alle Dateien herunterladen, ich möchte nur wissen, ob die Datei da ist (und zugänglich).Überprüfen Sie die Remote-Datei Existenz mit Flex 3

+0

, wo die Datei ist und was es (dh ein Windows Exe am Ende eines http-Links in Ihrem Beispiel oben - was übrigens sehr seltsam ist)? Abhängig von der Antwort haben Sie ein paar Optionen. – Simon

+0

In meinem Fall, ja http, aber nein, keine exe. Es wird eine Filmdatei sein, wahrscheinlich .mp4, .flv oder ähnliches. – Jonny

+0

Ich muss sagen, wenn ich mir diese alte Frage anschaue, würde ich das heute nicht fragen. Datei Existenz über das Web, wenn Sie http sprechen, sollte natürlich von der HTTP-Protokoll behandelt werden. Dh, wenn Sie einen 404 erhalten, existiert die Seite nicht. Und handle, was am besten passt, wenn du andere Antworten bekommst, wie Serverfehler, Zugriff verweigert usw. – Jonny

Antwort

0

Sie müssten wahrscheinlich versuchen, die Datei zu laden. Wenn Sie einen IOError erhalten, existiert die Datei nicht (oder Ihr Pfad ist falsch). Wenn es beginnt zu laden, indem es ein Fortschrittsereignis auslöst, existiert es. Sie können dann den Rest des Ladevorgangs abbrechen.

Alternativ könnten Sie versuchen, ein PHP-Skript aus Flash aufzurufen, das das tut, was Sie beschrieben haben, dies könnte ein einfaches Wahr/Falsch zurückgeben.

+0

Die Sache ist, wenn die Datei nicht existiert, gibt der Webserver eine 404 Seite oder ähnliches zurück (eigentlich in meinem Fall die Titelseite) wird zurückgegeben ... gesprengte URL wird überschrieben usw.) und technisch wird diese Seite erfolgreich heruntergeladen. Ich gehe für eine Lösung, die in der Nähe Ihrer Alternative ist - Ich überprüfe auf der Server-Seite (mit PHP in diesem Fall), ob die Datei existiert oder nicht - und fügt nur einen Parameter "keine Datei gefunden" zu den Flashvars . Das bedeutet, dass die Überprüfung in der Flash-Client-Anwendung nicht wirklich stattfindet. Ich denke, das ist jetzt gut genug für mich. – Jonny

1

Es gibt eine Utility-Klasse, die ich entwickelt habe, die eine Überprüfung durchführen, ob eine Datei existiert oder nicht. Hier ist der Code: https://github.com/eladelrom/eladlib/blob/master/EladLibFlex/src/com/elad/framework/utils/FileExistsUtil.as

und Implementierung sieht wie folgt aus:

var fileExists:FileExistsUtil = new FileExistsUtil(); 
fileExists.checkFile("file.jpg", 
function(eventType:String):void 
{ 
trace(eventType); 
}, 
function(errorType:String, text:String):void 
{ 
trace(errorType+": "+text); 
}); 
+2

der Link ist für mich gebrochen – Tom

+0

Der Link ist jetzt festgelegt, um auf den Projektort auf Github zeigen –

2

Dies ist der beste Code, den ich für den Job gefunden

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"); 
    } 
}