Compruebe la existencia de archivos remotos con Flex 3
-
05-07-2019 - |
Pregunta
En Flex 3 / AS 3, ¿cuál sería una buena manera de verificar si existe un archivo remoto? Estoy pensando en formas en las que intentarías " fopen " una ruta remota (como " http://example.com/somefile.exe "), Y ver si funciona o no. No estoy pidiendo que solo descargue todo el archivo, solo quiero saber si el archivo está allí (y accesible).
Solución
Probablemente deberías intentar cargar el archivo. Si obtiene un error IOError, el archivo no existe (o su ruta es incorrecta). Si comienza a cargarse, activando un evento de progreso, entonces existe. A continuación, puede cancelar el resto de la carga.
Alternativamente, puedes intentar llamar a un script PHP desde Flash que hace lo que has descrito, esto podría devolver un simple verdadero / falso.
Otros consejos
Este es el mejor código que encontré para el trabajo
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");
}
}
Hay una clase de utilidad que desarrollé que maneja una verificación del tiempo en que existe un archivo o no. Aquí está el código: https: // github. com / eladelrom / eladlib / blob / master / EladLibFlex / src / com / elad / framework / utils / FileExistsUtil.as
Y la implementación se ve 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);
});