URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3067
[ Назад ]

Исходное сообщение
"ZIP files access"

Отправлено mirya , 15-Июн-04 21:18 
  Предположим, из сети загружен большой ЗИП-архив, и проверка CRC показала, что нек-рые файлы в архиве попорчены. Нужно найти их "архивные" начало(смещение в архиве) и конец, чтобы потом перекачать только поломанную часть.
  На данный момент я вожусь с либой zip2.3, пытаясь вставить дамп смещения файла в то место, где она будет его читать. Но это не дело.
  Если есть предложения получше - пишите

Содержание

Сообщения в этом обсуждении
"ZIP files access"
Отправлено ACCA , 19-Июн-04 02:52 
У тебя три возможных случая -

1. Потерян кусок файла
2. Вставлен лишний кусок
3. Произошло искажение (в том числе 1+2)

Перейди на более надёжный протокол, хитрый алгоритм проверки ZIP обойдётся гораздо дороже.

Вариант решения - распаковываешь что распаковалось, остальные файлы создаёшь с нулевым содержимым (имена и размеры ты знаешь из каталога ZIP). Запаковываешь тем же алгоритмом и сравниваешь выходной поток с принятым файлом. Как только пошла разница - с этого места нужно качать заново.


"ZIP files access"
Отправлено mirya , 19-Июн-04 12:23 
  Я использовал Reget для закачки, он изначално резервирует файл размера закачки, а потом в него пишет. При сбоях маркеры закачки асинхронизируються с реально закачаным - в рез. часть архива в мусор. Проблема была в том, что сам Reget не сочетал возможности частичной закачки файлов архива И использования куков от браузера - только прямым редактированием конфига.
  Насчет попыток найти начало-конец поврежденного модификацией unzip завершились неудачей - код дико кривой.