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).

¿Fue útil?

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);
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top