Apache читает файлы ZIP вместо загрузки

У меня проблема с моим скриптом, когда я пытаюсь загрузить ZIP-файлы после создания - apache читает их вместо загрузки!!!

Я использую класс zipstream.php ( https://github.com/maennchen/ZipStream-PHP)

Как настроить apache (работающий на Ubuntu), чтобы разрешить загрузку этих файлов с расширением ZIP?

Спасибо!

Код, который я использую:

<?php
if($_GET['download'] == "ok")
{

$id = $_GET['id'];

$content = "TEST";

$mysql = $db_1->query("select result from testing where id='$id'");
$row = mysql_fetch_assoc($mysql);
$content .= $row['result'];

$file_opt = array(
  'time'    => time() - 2 * 3600,
  'comment' => 'Simple Comment !',
);

$zip = new ZipStream('test.zip', array(
  'comment' => 'Simple Comment !'
));

$zip->add_file('test.txt', $content, $file_opt);
$zip->finish();

exit;

}

Примечание: проблема в том, что когда я вызываю файл из JQUERY, он не загружается, но когда я просматриваю его напрямую, он загружается правильно!!

2 ответа

Решение

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

header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="myFileName.zip"');

Обновление: у вашей библиотеки, похоже, есть правильный метод отправки заголовков zip. Попробуйте использовать это вместо:

$zip = new ZipStream('test.zip', array(
    'comment' => 'Simple Comment !',
    'send_http_headers' => true,
));

Это должно работать:

$filename = "test.zip";
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="' . $filename . '"');
readfile($filename);
Другие вопросы по тегам