PHP скачать скрипт для ZIP файлов, повреждающих файл - PullRequest
1 голос
/ 08 июня 2011

Вот мой код:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$filename.'.zip');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
@readfile($file);
exit;

$file равно расположению файла на моем сервере (местоположение находится вне каталога public_html)

Когда файл загружен, я открываю файл, чтобы найти поврежденный zip-архив. Я вижу список всех файлов в zip-архиве, но не могу их открыть. Когда я загружаю файл через мой FTP-клиент, архив НЕ поврежден. У меня нет пробелов до или после сценария. Что может быть причиной повреждения этого файла?

Edit:

Я обнаружил проблему: сжатие zlib повредило файлы, поэтому я добавил ini_set('zlib.output_compression', 'Off'); в начало скрипта

1 Ответ

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

Проблема в том, что вы не отправляете правильный диапазон содержимого, поэтому размер файла неверен при сообщении в браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...