2011-03-10 3 views
1

Можно ли проверить, существует ли файл в WebOS, прежде чем продолжить загрузку с помощью службы диспетчера загрузки?WebOS: как проверить, существует ли файл?

По умолчанию метод «скачать» добавит символ подчеркивания +, чтобы избежать перезаписи, но я пытаюсь избежать загрузки файла, если он уже существует в локальной/медиа/внутренней/файловой папке. ..

Я смотрел по всей сети, но безрезультатно ... Любые подсказки? Спасибо!

+0

Я думаю, вы спрашиваете, потому что вы не получите желаемый результат. Но ОС действительно должна обрабатывать локальный файл при доступе к тому же URL-адресу, независимо от локального переименования. Просто хотел сказать, что по моему опыту лучше не делать кеширование или подобные вещи самостоятельно, но посмотреть, есть ли другая причина плохой производительности. Если URL-адрес не совпадает, это, конечно, другое дело. –

+0

Я не уверен, что понимаю ваш ответ. позвольте мне попытаться объяснить, что я пытаюсь сделать: пользователь может слушать потоковый mp3-файл, если ему это нравится, он может нажать кнопку «загрузить». Дело в том, что я хочу убедиться, что если файл с тем же именем уже существует в целевом каталоге, загрузка не приведет к экономии полосы пропускания и не позволит пользователю загружать файл, уже загруженный ранее ... –

ответ

2

Возможно, самым простым способом является использование запроса Ajax, чтобы попытаться прочитать файл. http://forums.precentral.net/web-os-development/196320-how-parse-text-file-pres-file-system-into-app.html

Если вы не можете прочитать файл, он, очевидно, еще не загружен. не


Edited добавить следующее из WebOS 1.4 выпуска:

Для Ajax.Request, если запрошенный файл не существует, то запрос больше не получает «404», который считается неудачей, но «0», которая считается успешной. Вам нужно будет изменить свой код, чтобы найти transport.status of 0 для файла, который не существует, или 200 для файла, который делает. См. the Mozilla documentation для получения дополнительной информации. Пример:

new Ajax.Request('/media/internal/my.file', { 
    method: 'get', 
    onSuccess: function(transport) { 
     //This is new for 1.4, we have to check the status of 
     //the transport object to see if the file exists or not. 
     if (transport.status == 200) 
      Mojo.Log.info('200 = http ok, file exists') 
     else if (transport.status == 0) 
      Mojo.Log.info('0 = response was empty, file does not exist') 
    }, 
    onFailure: function(transport) { 
     Mojo.Log.info('In 1.3.5 if the file didn’t exist the request would return here') 
    } 
}); 
+0

Я попробовал что, но по какой-то причине он всегда возвращает true ...?! –

+0

(и недокументированный вызов «palmGetResource» предназначен только для текстовых файлов) –

+0

Странно. Я бы ожидал, что Ajax.request будет работать. Я примерно на 80% уверен, что я видел это раньше. Будет проверять его, как только мой телефон закончит обновление программного обеспечения ... –