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

Foi útil?

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);
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top