Ошибка «Сжатая (zip) папка неверна или повреждена» после загрузки zip файла - иногда, но не всегда

4

У меня есть zip-архив ~ 250Mb, расположенный на HTTP-сервере Apache. Несколько пользователей жаловались на «поврежденную папку zip» после загрузки файла непосредственно с веб-сайта (хотя сайт построен на Drupal, но использует публичный метод загрузки, поэтому его следует загружать напрямую)

Сообщение об ошибке при попытке открыть его в Windows:

Сжатая (zip) папка неверна или повреждена

Я сам попробовал это на Windows XP и использую Firefox 14 и IE8. Иногда он загружается и открывается правильно, иногда я получаю сообщение об ошибке.

Другой пользователь работает в Windows 7 и использует Internet Explorer и получил это сообщение после нескольких попыток загрузки.

Когда я загружаю через FTP с помощью Filezilla, я могу открыть файл zip без ошибок.

Поскольку загрузка по FTP и HTTP работает иногда, то я предполагаю, что файл на сервере не поврежден, но что-то происходит во время загрузки, и повторная загрузка файла ничего не исправит (и я пробовал это).

Я создал zip-файл, используя IZArc, но я не уверен, что метод создания в этом случае уместен, поскольку иногда он работает.

  1. Что вызывает вышеприведенные сообщения об ошибках?
  2. Почему это происходит иногда и не всегда?
  3. Что я могу сделать, чтобы в будущем файлы zip открывались без ошибок?
authentictech
источник
Ответ на все ваши вопросы заключается в том, что файл поврежден. Получают ли они эту ошибку при использовании фактического программного обеспечения для извлечения файла .zip?
Ramhound
1
Убедитесь, что либо клиенты получают Content-Lengthзаголовок при загрузке файла, либо кодировка передачи фрагментирована. В противном случае возможно усечение.
Дэвид Шварц
@Ramhound, это больше вопрос, чем ответ. Вопрос заключается в следующем: что вызывает повреждение в тех случаях, когда оно иногда искажается, а не других (и для разных людей при разных сетевых подключениях / настройках программного обеспечения). Почему это должно быть настолько противоречивым, если исходный файл в порядке?
authentictech
@DavidSchwartz, звучит многообещающе. Можете ли вы уточнить, как можно проверить, что клиенты получают Content-Lengthзаголовок? Благодарю.
authentictech
@DavidSchwartz Я использовал Fiddler для проверки заголовков ответа, и Content-Lengthзаголовок отправляется со значением, равным размеру файла, поэтому, похоже, все в порядке.
authentictech

Ответы:

4

Что вызывает вышеприведенные сообщения об ошибках?

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

Почему это происходит иногда и не всегда?

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

Что я могу сделать, чтобы в будущем файлы zip открывались без ошибок?

Укажите контрольные суммы для всех ваших загрузок и попросите пользователей проверить их. Однако вы не можете избежать проблем с сетью. Вы можете поговорить с вашим хозяином.

angelsl
источник
Это, пожалуй, самый полезный и полный ответ, спасибо. Я посмотрю на то, что вы говорите, и, скорее всего, вернусь и отмечу это как ответ. В то же время, как вы думаете, почему это было бы так противоречиво, если бы у разных пользователей были разные подключения и настройки программного обеспечения? Предполагая, что исходный файл в порядке (что должно быть, если он иногда открывается), я не понимаю, почему у меня, в частности, должна быть эта проблема так часто, как с этим файлом. Я скачал много zip-файлов в моей жизни и только иногда имел поврежденные файлы, но не так часто, как в этом случае. Благодарю.
authentictech
В частности, о чем я могу попросить своего хозяина, чтобы он направил их в правильном направлении к возможному решению проблемы? Что может пойти не так в их конце? Благодарю.
authentictech
1
Это только с конкретным zipfile? Вы тестировали с zip-файлами (или другими файлами) меньшего или большего размера? Это может быть большой размер, обеспечивающий больше времени для сброса соединения, поэтому вы видите эту проблему только с этим файлом. Кроме того, может ли это быть PHP-скрипт, обслуживающий загрузку по истечении времени ожидания (так как вы упомянули Drupal)? Если нет, вы можете попросить вашего хоста проверить наличие проблем с их соединением, упомянув эту проблему.
ангел
Я не проверял с другими, но попробую. Имеет смысл, что у больших файлов может быть больше проблем с разрывом соединения. Хотя я и большинство пользователей подключены к стабильным широкополосным сетевым соединениям (разве TCP / IP не решает эту проблему?). Я ссылаюсь прямо на файл, поэтому я предполагаю, что Drupal не вмешивается в это (хотя может, если вы перейдете на приватный метод загрузки). В этом случае пользователи не являются техническими и не справятся с проверкой контрольных сумм. Я заново создал почтовый индекс, используя Windows, а не стороннее программное обеспечение, чтобы увидеть, если это имеет значение. Спасибо за вашу помощь.
authentictech
Хост не предоставляет никакой помощи, кроме как сказать, что они могут загрузить файл ОК в конце, поэтому, хотя я не думаю, что точно знаю, почему это происходит так часто, я отмечу это как ответ, как и будет вероятно применимо в большинстве случаев. Благодарю.
authentictech
2

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

Используя Cygwin , вы можете вычислить хэш SHA-1 или MD5 вашего zip-файла, а затем опубликовать результат. Хеши действительно хороши, потому что их можно использовать для проверки на битовом уровне, что один файл точно такой же, как другой. Например: хеш для файла, содержащего «0123456789», равен 3749f52bb326ae96782b42dc0a97b4c1. Хеш для файла, содержащего «1123456789», равен b0b7fa225796be83e7fea1345c13d3dd.

Если я правильно помню мой ASCII, разница между двумя строками составляет всего один бит, но, как вы можете видеть, в результирующих хешах есть огромная разница. Публикация хеша MD5 или SHA-1 - очень распространенная вещь в мире разработки программного обеспечения, поскольку это очень хороший способ убедиться, что ваши файлы не повреждены. После публикации хеша MD5 / SHA-1 ваши клиенты могут получить хеш почтового индекса, чтобы увидеть, действительно ли он поврежден или нет.

Существует множество утилит для Windows, Linux и Mac, которые генерируют хеши MD5 и SHA-1. Я использую Cygwin, потому что это бесплатно.

зеленый
источник
Это имеет смысл во многих ситуациях. Я имею дело с очень нетехническими пользователями, которые не справятся с проверкой хеша, но это хороший совет в целом. Благодарю.
authentictech
1

Это обычно происходит, когда одно из имен файлов в ваших папках имеет специальный символ, такой как кавычки ". Вы должны игнорировать эти файлы.

Но это трудно, когда у вас есть несколько тысяч файлов, может быть, вы можете попробовать 7-Zip .

user110346
источник
1
Добро пожаловать на SU. Если вы проигнорируете какой-то файл, вы пропустите какой-либо контент. Я понимаю, что, вероятно, хотел бы предложить, чтобы избежать использования таких имен.
Хастур
1

Ах, user110346 на что-то.

У меня была такая же проблема - я создал .zip на Mac, что привело к ошибке в Windows 7 (но правильно извлечено на Mac).

Следуя его подсказке, я заметил, что у меня есть куча папок с маркером в названии (опция-8 на клавиатуре Mac). Удалил все эти папки, заново заархивировал и Presto - файл .zip работает без проблем в Windows.

Таким образом, очевидно, что использование символов, недопустимых в Windows, в именах файлов, содержащихся в zip-файле, заставит Windows сообщать об ошибке « сжатый (zip-файл) XYZXYZ неверен » при открытии .zip-файла.

Demis
источник
Я думаю, странный персонаж пули нелегален. Вы также можете установить 7zip и использовать опцию «test», чтобы проверить, является ли zip-файл плохим или нет ...
rogerdpack
0

Если файл на стороне клиента имеет правильный размер, эта ситуация может быть вызвана неисправной памятью на клиентском ПК или неисправным сетевым оборудованием между ними. Часто случайное переключение битов не особенно заметно во многих приложениях, но когда дело доходит до контрольных сумм, которые используются для проверки целостности архива, каждый бит имеет значение, и эти ошибки становятся очевидными.

Олег В. Волков
источник
0

Я использую Windows XP. Я получал то же сообщение и не мог открыть zip-файл, пока не загрузил winzip185 из Интернета. Затем изнутри winzip я смог легко открыть файл и перетащить его на рабочий стол. Надеюсь, это поможет!

Лиз
источник
7zip также извлек что-то для меня, что привело к сообщению об ошибке OP с обычным экстрактором. Weird.
rogerdpack