Controlla l'esistenza dei file remoti con Flex 3
-
05-07-2019 - |
Domanda
In Flex 3 / AS 3, quale sarebbe un buon modo per verificare se esiste un file remoto? Sto pensando in modi PHP in cui proveresti a "fopen" un percorso remoto (come " http://example.com/somefile.exe "), e vedere se funziona o no. Non sto chiedendo di scaricare solo tutto il file, voglio solo sapere se il file è lì (e accessibile).
Soluzione
Probabilmente dovrai tentare di caricare il file. Se ricevi un IOError, il file non esiste (o il tuo percorso è sbagliato). Se inizia il caricamento, attivando un evento progress, allora esiste. Puoi quindi annullare il resto del caricamento.
In alternativa puoi provare a chiamare uno script PHP da Flash che fa quello che hai descritto, questo potrebbe restituire un semplice vero / falso.
Altri suggerimenti
Questo è il miglior codice che ho trovato per il lavoro
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");
}
}
Esiste una classe di utilità che ho sviluppato che gestisce un tempo di controllo in cui un file esiste o meno. Ecco il codice: https: // github. com / eladelrom / eladlib / blob / master / EladLibFlex / src / com / Elad / quadro / utils / FileExistsUtil.as
E l'implementazione si presenta così:
var fileExists:FileExistsUtil = new FileExistsUtil();
fileExists.checkFile("file.jpg",
function(eventType:String):void
{
trace(eventType);
},
function(errorType:String, text:String):void
{
trace(errorType+": "+text);
});