О загрузке файла с помощью ASIHttpRequest - PullRequest
4 голосов
/ 27 июля 2010

Я планирую использовать ASIHttpRequest для загрузки файлов с внутреннего сервера.Перед действиями опубликуйте вопросы здесь, чтобы узнать больше об этой функции.

В качестве примера приведены исходные коды: (продемонстрируйте загрузку удаленного файла JPG)

    ASIHTTPRequest *request;
request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/images/small-image.jpg"]];
[request setDownloadDestinationPath:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"1.png"]];
[request setDownloadProgressDelegate:imageProgressIndicator1];
[networkQueue addOperation:request];

Мои вопросы:

  1. Может загружать любые форматы файлов, такие как MP3, видеофайлы и т. Д.?Какие-нибудь ограничения, например, размер файла, время ожидания?

Похоже, вам просто нужно установить путь к удаленному файлу, "http://allseeing -i.com / ASIHTTPRequest / tests /images / small-image.jpg", тогда он может загрузить все удаленно по протоколу HTTP.

Как насчет функции возобновления?

Он обеспечивает настройку «RESUME» через YES / NO, этого достаточно для нормальной функции возобновления?Например, если файл большой, сделайте паузу, а затем возобновите его с прошлого раза.

Спасибо за любые комментарии или комментарии, мне нужно изучить это, прежде чем принять это в свой проект.Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 01 августа 2010

Вы одновременно опубликовали это в группе запросов asi http и получили там ответ:

http://groups.google.com/group/asihttprequest/browse_thread/thread/34eced6759cb7327/47aef091a77331fd?lnk=raot#47aef091a77331fd

(Если вы собираетесь публиковать вопрос в нескольких местах одновременно, было бы по крайней мере вежливо записывать тот факт, что вы уже получили ответ!)

Ответы были (от BenC, автора ASIHTTPRequest):

1: Да, вы можете скачать любой файл любого размера. Я думаю, что единственное теоретическое ограничение - это количество свободного места на устройстве.

По умолчанию время ожидания запросов истекает, если они не получили никаких данных в течение 10 секунд. Вы можете увеличить период ожидания, задав свойство timeoutSeconds запроса или изменив значение по умолчанию с помощью [ASIHTTPRequest setDefaultTimeoutSeconds: x]. Обратите внимание, что это не означает, что загрузка должна завершиться менее чем за 10 секунд, только то, что она не должна зависать более чем на 10 секунд.

и

2: Да, функция возобновления - это хороший способ обработки больших загрузок, особенно в соединениях WWAN, где потеря соединения встречается гораздо чаще. О возобновлении загрузки следует помнить две вещи: - Вы должны настроить запросы на возобновление заранее - если вы хотите возобновить запрос в какой-то момент в будущем, вы должны настроить его на возобновление перед началом загрузки (см. Документацию для получения подробной информации). - Не все загрузки могут быть возобновлены - сервер должен поддерживать возобновление загрузки для ресурса, который вы загружаете. Обычно возобновление не поддерживается, если содержимое генерируется динамически.

2 голосов
/ 22 января 2012

Я столкнулся с той же проблемой с большими файлами через очень ненадежное сетевое соединение.Я придумала решение, использующее ASIHttpRequest для одновременной загрузки частей и их объединения.Вот код:

https://github.com/anlcan/Happy-Download

...