2009-07-30 2 views
2

В Flex 3/AS 3, что было бы хорошим способом проверить, существует ли удаленный файл? Я думаю о PHP, где вы пытаетесь «открыть» удаленный путь (например, «http://example.com/somefile.exe») и посмотреть, работает оно или нет. Я не прошу просто загрузить весь файл, я просто хочу знать, есть ли файл (и доступен).Проверить удаленное сохранение файлов с помощью Flex 3

+0

, где находится файл, и что это такое (т.е. windows exe в конце ссылки http в вашем примере выше - что очень странно, кстати)? В зависимости от ответа на это у вас будет несколько вариантов. – Simon

+0

В моем случае, да, http, но нет, не exe. Это будет файл фильма, возможно .mp4, .flv или аналогичный. – Jonny

+0

Я должен сказать, глядя на этот старый вопрос, это не то, что я прошу сегодня. Существование файла через Интернет при разговоре http должно, конечно, обрабатываться протоколом http. Т.е., если вы получаете 404, страница не существует. И обрабатывайте то, что подходит вам лучше всего, если вы получите другие ответы, такие как ошибка сервера, доступ запрещен и т. Д. – Jonny

ответ

0

Возможно, вам будет необходимо загрузить файл. Если вы получаете IOError, файл не существует (или ваш путь неправильный). Если он начинает загружаться, путем запуска события прогресса, то он существует. Затем вы можете отменить оставшуюся часть загрузки.

В качестве альтернативы вы можете попробовать вызвать PHP-скрипт из Flash, который делает то, что вы описали, это может привести к простому true/false.

+0

Дело в том, что если файл не существует, веб-сервер возвращает страницу 404 или подобное (фактически в моем случае, на первой странице возвращается ... переработанные URL-адреса и т. д.), и технически эта страница будет успешно загружена. Я собираюсь найти решение, близкое к вашему альтернативу - я проверяю серверную часть (используя PHP в этом случае), если файл существует или нет, и просто добавляет параметр «no file found» в flashvars , Это означает, что проверка не выполняется в приложении флэш-клиента. Думаю, для меня это достаточно хорошо. – Jonny

1

Существует класс полезности, который я разработал, чтобы обрабатывать проверку погоды. Файл существует или нет. Вот код: https://github.com/eladelrom/eladlib/blob/master/EladLibFlex/src/com/elad/framework/utils/FileExistsUtil.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); 
}); 
+2

ссылка для меня нарушена – Tom

+0

Ссылка фиксирована сейчас, чтобы указать на расположение проекта на github –

2

Это лучший код, который я нашел для работы

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"); 
    } 
}