PHP скачать код работает для PDF, но не ZIP

Я успешно загружаю PDF-файлы с этим кодом. Я использую идентичный код для загрузки zip-файла, содержащего exe-файл (просто меняя имя файла и меняя тип mime на application / zip), и получаю эту ошибку при попытке открыть загруженный файл:
«Windows не может открыть папку.
Сжатая (заархивированная) папка ‘[filename]’ недействительна «

Я проверил, что оригинальный несжатый файл работает, а также я могу успешно разархивировать папку на моем ноутбуке и запустить exe.

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

Это файл размером 70 МБ, поэтому я попытался загрузить ZIP-файл размером 65 КБ — та же ошибка.

Я добавил заголовок («Content-Length:». $ File_size), хотя PDF-файлы без него загружались нормально — та же ошибка.

Я пробовал application / octet-stream — та же ошибка.

Есть идеи? Любые предложения приветствуются.

$file_size  = filesize($file_path);
$file = @fopen($file_path,"r");
if ($file)
{
header("Pragma: public");
header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename=\"$file_name\"");
//header("Content-Length: " . $file_size);
header("Content-Type: " . $ctype);set_time_limit(0);
fseek($file, 0);

while(!feof($file))
{
print(@fread($file, 1024*8));
ob_flush();
flush();
if (connection_status()!=0)
{
@fclose($file);
exit;
}
}
@fclose($file);
}

1

Решение

Проблема может быть в том, что ваш php_execution_time на низком уровне, и он прерывается до загрузки zip.
Проверьте, соответствует ли размер почтового индекса размеру сервера.

или активируйте mod_xsendfile в Apache и установите заголовок:

header("X-Sendfile: $filename");
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector