Verifique a existência de arquivos remotos com o Flex 3
-
05-07-2019 - |
Pergunta
No Flex 3 / AS 3, o que seria uma boa maneira de verificar se existe um arquivo remoto? Estou pensando em maneiras de PHP onde você iria tentar um caminho remoto "fopen" (como " http: // example.com/somefile.exe "), e ver se funciona ou não. Eu não estou pedindo apenas para baixar todo o arquivo, eu só quero saber se o arquivo está lá (e acessível).
Solução
Você provavelmente precisará tentar carregar o arquivo. Se você receber um IOError, o arquivo não existe (ou o seu caminho é errado). Se ele começa a carregar, por desencadear um evento de progresso então ele existe. Você pode, então, cancelar o restante do carregamento.
Como alternativa, você poderia tentar chamar um script PHP do Flash que faz o que você descreveu, isso poderia retornar um verdadeiro / falso simples.
Outras dicas
Este é o melhor código que eu encontrei para o trabalho
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");
}
}
Há uma classe de utilitário que eu desenvolvi que lidar com um tempo de verificação um arquivo existe ou não. Aqui está o código: https: // github. com / eladelrom / eladlib / blob / master / EladLibFlex / src / com / elad / framework / utils / FileExistsUtil.as
e olha de implementação como este:
var fileExists:FileExistsUtil = new FileExistsUtil();
fileExists.checkFile("file.jpg",
function(eventType:String):void
{
trace(eventType);
},
function(errorType:String, text:String):void
{
trace(errorType+": "+text);
});