РАЗРАБОТЧИКАМ · ЗАГРУЗКА

Chunked и resumable upload: передача больших файлов без потери прогресса

Большой файл надёжнее передавать частями: сбой сети тогда повторяет только небольшой диапазон, а не всю загрузку.

Обновлено: 8 минутПросмотры загружаются
Частичная загрузка большого файла с возобновлением и проверкой

Большой файл надёжнее передавать частями: сбой сети тогда повторяет только небольшой диапазон, а не всю загрузку.

Зачем делить файл на части

Chunked upload разбивает поток на части фиксированного размера и отправляет их независимо. Сервер связывает части с upload-сессией и не смешивает их с другим объектом.

Что хранить на стороне клиента

Клиенту нужны идентификатор сессии, размер файла, размер части и номер последней подтверждённой части. После обрыва он запрашивает состояние и продолжает с первого неподтверждённого диапазона.

Повторы без дубликатов

Повтор одной части должен быть безопасным: сервер сверяет номер, длину и хэш. Тайм-аут не означает, что часть не принята, поэтому перед повтором лучше получить состояние сессии.

Финальная сборка

После всех частей клиент завершает сессию. Сервер проверяет порядок, итоговый размер и SHA-256 полного файла, затем делает файл доступным как компонент EOC. Частичный результат нельзя считать опубликованной ревизией.

Практический чек-лист

  1. Назначьте устойчивый размер части и тайм-аут.
  2. Сохраняйте прогресс вне памяти вкладки.
  3. Повторяйте только неизвестные части.
  4. Проверяйте итоговый хэш до создания ревизии.

Итог

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