我的脚本有问题,当我尝试在创建后下载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调用文件时他不会下载,但当我直接浏览它时,他正确下载!!
答案 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);