我正在尝试压缩文件,然后发送给用户下载该文件,但它无法正常工作。当它执行我的php函数时,它只将文件内容输出到firebug中,如果firebug没有打开,它什么都不做。我试图发送的文件是2,9MB,但我试图只发送一个带有单个短语的txt文件,但是没有用。我已经检查过,文件已经创建并且文件添加正确。
$zipname = path . "arquivos/" . $file . ".zip";
touch($zipname);
$zip = new ZipArchive();
$result = $zip->open($zipname, ZipArchive::CREATE);
if ($result === true) {
foreach ($Variable->Dados as $key => $value) {
$zip->addFile(path . "arquivos/articulador_avaliacao/" . $value->arquivo, $value->arquivo_nome);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="' . basename($zipname) . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must_revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($zipname));
ob_clean();
flush();
readfile($zipname);
}
unlink($zipname);
这通过某个过程执行:用户点击html标签,执行javascript函数的onclick函数,这个javascript函数使用ajax将变量发送到php文件,然后执行此代码。
答案 0 :(得分:0)
我运行你的代码,它工作了:)也许浏览器解释标题有问题?尝试使用不同的浏览器并检查您的浏览器配置。
答案 1 :(得分:0)
由于我使用javascript和AJAX,我做了一些研究,CBroe告诉我,我找到了解决方案。我的PHP脚本中没有这些标题,也没有readfile函数。
当客户端点击按钮时,javascript函数执行并通过AJAX将数据发送到PHP脚本。此PHP脚本使用函数触摸和 ZipArchive 类创建zip文件,并将此文件的路径作为ajax响应发送。在javascript中,我使用它将文件发送到客户端:
window.open(ajaxObject.response, '_blank');
这一切都很完美。