Возможность возобновления загрузки с использованием API загрузки файлов HTML5 - - PullRequest
9 голосов
/ 27 июля 2011

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

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

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Полагаю, вам лучше всего выбрать простое хеширование (MD5 слишком медленно работает с большими файлами, чтобы быть полезным).

Альтернатива: присвойте загрузкам имя по имени файла (и какую-то временную нумерацию при несколькихзагружаются файлы с одинаковыми именами, например, file-1, file-2, file-3), и проверяются случайные байты в уже загруженном файле и локальном файле.Например:

  1. Найти все файлы с одинаковым именем файла (исключая текущую числовую нумерацию)
  2. Сравнить 10 байтов каждые 10 МБ с сервера с локальным файлом, если эти байты совпадаютВы можете чувствовать себя достаточно уверенно в том, что это правильный файл.

Конечно, это может привести к неправильному файлу, но может и к хешированию.

0 голосов
/ 19 июня 2012

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

Учебное пособие по хранению файлов в IndexedDB см. В Хранение изображений и файлов в IndexedDB .

...