Apache读取ZIP文件而不是下载

时间:2014-09-12 12:16:01

标签: php apache ubuntu zipstream

我的脚本有问题,当我尝试在创建后下载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 个答案:

答案 0 :(得分:2)

您可能忘记在回显内容之前设置zip标头。在打印zip内容之前尝试此操作:

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

更新:您的lib似乎有一个正确的方法来发送zip标头。请尝试使用此代码:

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

答案 1 :(得分:0)

这应该有效:

$filename = "test.zip";
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="' . $filename . '"');
readfile($filename);