Как Fine Uploader определяет, как и когда возобновить загрузку нескольких частей в Amazon S3?

У меня есть рабочий пример использования многокомпонентной функциональности Fine Uploader с Amazon S3. Однако я хотел бы знать, как его использовать. Я вижу, что если я прерву загрузку большого файла, перезагружу страницу и снова укажу тот же файл, загрузка возобновится. Но как вспомнить резюме? Это через cookie сеанса? Если пользователь полностью удаляет все файлы cookie и историю, может ли резюме работать? Что нужно сохранить, чтобы возобновить прерванную загрузку? Все ли зависит от ключа, сгенерированного для объекта? Пока ключ такой же? Можете ли вы представить несколько сценариев, в которых загрузка резюме работает, а когда - нет? Спасибо.


person sthede    schedule 14.10.2013    source источник


Ответы (1)


Функция возобновления существует в Fine Uploader S3 и Fine Uploader для традиционных конечных точек. Для традиционных конечных точек файлы cookie используются для хранения информации о ходе фрагментированной загрузки. Однако Fine Uploader S3 использует localStorage .

После успешной загрузки каждого фрагмента в S3 обработчик транспорта загрузки XHR Fine Uploader S3 сохраняет информацию о текущем состоянии этого файла в localStorage, представленном как элемент.

Ключ этого localStorage элемента состоит из следующих данных:

  1. имя файла
  2. размер файла
  3. максимальный размер блока
  4. Имя сегмента S3

Значение элемента localStorage - это Object (хранится в виде строки) со следующими свойствами:

  1. имя файла
  2. размер файла
  3. файл UUID
  4. Имя ключа S3
  5. Количество успешно загруженных байт
  6. Текущее время / дата
  7. Общее количество кусков / частей
  8. Индекс последнего блока успешно загружен
  9. Назначенный S3 идентификатор загрузки (возвращается из S3 во время исходного вызова REST «Инициировать многостраничную загрузку» - это обязательная часть каждого запроса загрузки)
  10. Сопоставление индексов частей со значениями etag для всех успешно загруженных частей, то есть информация, которую Fine Uploader S3 должен включить в запрос REST «Complete Multipart Upload», который отправляется после загрузки последней части (запрашивая S3 объединить все части) .

Когда внутренний обработчик загрузки XHR Fine Uploader S3 получает сигнал «начать загрузку», он вычисляет ключ файла для загрузки (используя элементы из первого списка выше). Если существует элемент localStorage (в текущем домене / источнике), то сохраненные данные используются для возобновления загрузки.

Обратите внимание, что все элементы с истекшим сроком localStorage удаляются во время инициализации экземпляра Fine Uploader S3. Срок действия элемента истек, если свойство даты (см. 2-й список выше) старше 7 дней. Однако это значение можно настроить с помощью параметра resume.recordsExpireIn.

Вы можете увидеть всю эту логику и многие другие подробности, заглянув в Исходный код модуля обработчика загрузки Fine Uploader S3.

person Ray Nicholus    schedule 15.10.2013