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);