Проверка размера файла перед загрузкой нескольких файлов

В настоящее время я внедряю функцию обновления в приложение, которое я создаю. Он использует NSUrlConnection и NSURLConnectionDelegate для загрузки файлов и сохранения их на устройство пользователя.

На данный момент 1 элемент обновления загружает несколько файлов, но я хочу отображать эту загрузку нескольких файлов с помощью 1 UIProgressView. Итак, моя проблема в том, как мне узнать ожидаемую длину содержимого всех файлов, которые я собираюсь загрузить? Я знаю, что могу получить expectedContentLength объекта NSURLResponse, который передается в метод didReceiveResponse, но это только для загружаемого файла.

Любая помощь очень ценится. Спасибо.


person JDx    schedule 09.05.2012    source источник


Ответы (2)


Как насчет того, чтобы на вашем сервере был какой-то информационный файл, который фактически дает вам общее количество байтов. Вы можете сначала загрузить это, а затем загрузить свои файлы. Затем вы можете вычесть загруженную сумму для каждого файла из общей суммы.

Другой способ - сначала подключиться ко всем файлам и отменить подключение после получения ответов. Добавьте ожидаемые байты всех файлов, а затем используйте их как основу для отображения общего прогресса при загрузке файлов.

Оборотная сторона №1: вам нужно вручную отслеживать байты.

Оборотная сторона №2: у вас будет вдвое больше запросов, даже если они будут отменены после ответа.

person Johannes Lumpe    schedule 09.05.2012
comment
Хорошая идея. Я думаю, что первая идея, вероятно, лучшая, каждое обновление - это объект NSDictionary, поэтому я просто добавлю свойство для размера содержимого. Спасибо! - person JDx; 09.05.2012

Используйте платформу с открытым исходным кодом ASIhttp, широко используемую для этой цели, здесь вам просто нужно установить делегат progressview ... чтобы он продолжал обновлять ваше представление прогресса

Попробуйте этот http://allseeing-i.com/ASIHTTPRequest/

person Allamaprabhu    schedule 09.05.2012