Как возобновить загрузку больших файлов в ios - PullRequest
0 голосов
/ 24 апреля 2018

Я использую downloadTask для URLSession для загрузки большого файла.Проблема, с которой я сталкиваюсь, заключается в том, как обеспечить паузу и возобновить работу.Я читал, что при отмене закачки с помощью resumeData возвращается resumeData, которую можно использовать в следующий раз для возобновления загрузки.Но для действительно большого файла это резюме данных может быть очень большим (я думаю. В зависимости от размера файла и на каком этапе загрузки приостанавливается, оно может быть очень большим).Как мне сохранить эти большие резюме, чтобы я мог использовать их в следующий раз, чтобы возобновить загрузку.Также может быть несколько загрузок одновременно, что еще больше увеличивает ту же проблему.

1 Ответ

0 голосов
/ 07 июня 2018

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

В нем содержится набор метаданных для передачи:

  • URL-адрес на диске, на котором хранится временный файл.
  • Метка времени, указывающая, когда началась выборка, чтобы он мог запросить у сервера, изменился ли файл с тех пор.
  • URL-адрес запроса.
  • Набор заголовков запросов.
  • Вероятно, некоторые UUID.

И это может быть просто URL-адрес файла метаданных на диске, который содержит перечисленные вещивыше.Я не уверен, какой именно.

В любом случае, вы не получите многобигабайтный resumeData блоб.Это было бы разрушительным.Весь смысл задачи загрузки заключается в том, что она загружается на диск, а не в память.

...