通过浏览器下载后,无法解压缩在PHP中创建的文件 $zip=new ZipArchive(); $filename=$first\u name。“.zip”; 如果($zip->open($filename,ZipArchive::CREATE)!==TRUE){ 退出(“无法打开”); } $zip->addFile($first_name。“.clean”); $zip->addFile($first_name。“.log”); $zip->addFile($first_name。“.result”); $zip->addFile($first_name。“.txt”); $zip->close(); 标题(“内容类型:应用程序/八位字节流”); 标题(“内容处置:附件;文件名=$filename”); 标题(“内容长度:”.filesize($filename)); 标题(“到期日:0”); 标题(“Pragma:public”); 标头(“缓存控制:必须重新验证,后检查=0,前检查=0”); 标头(“缓存控制:公共”); 标题(“内容描述:文件传输”); 标头('Cache-Control:max age=0');//无缓存 标题(“内容传输编码:二进制”); ob_end_flush(); readfile(“$filename”);

通过浏览器下载后,无法解压缩在PHP中创建的文件 $zip=new ZipArchive(); $filename=$first\u name。“.zip”; 如果($zip->open($filename,ZipArchive::CREATE)!==TRUE){ 退出(“无法打开”); } $zip->addFile($first_name。“.clean”); $zip->addFile($first_name。“.log”); $zip->addFile($first_name。“.result”); $zip->addFile($first_name。“.txt”); $zip->close(); 标题(“内容类型:应用程序/八位字节流”); 标题(“内容处置:附件;文件名=$filename”); 标题(“内容长度:”.filesize($filename)); 标题(“到期日:0”); 标题(“Pragma:public”); 标头(“缓存控制:必须重新验证,后检查=0,前检查=0”); 标头(“缓存控制:公共”); 标题(“内容描述:文件传输”); 标头('Cache-Control:max age=0');//无缓存 标题(“内容传输编码:二进制”); ob_end_flush(); readfile(“$filename”);,php,download,zip,unzip,Php,Download,Zip,Unzip,我试图通过PHP代码创建一个.zip文件,并通过浏览器将其下载到localhost上。下载的zip无法解压缩,并显示如下错误消息: 存档:上传\u pnt-prs.zip 找不到中央目录签名的结尾。此文件不是 zipfile,或它构成多部分存档的一个磁盘。在 后一种情况下,将在上找到中心目录和zipfile注释 此存档的最后一个磁盘。 解压:在upload_pnt-prs.zip或 upload_pnt-prs.zip.zip,但找不到upload_pnt-prs.zip.zip,句号 我已经尝

我试图通过PHP代码创建一个.zip文件,并通过浏览器将其下载到localhost上。下载的zip无法解压缩,并显示如下错误消息:

存档:上传\u pnt-prs.zip 找不到中央目录签名的结尾。此文件不是 zipfile,或它构成多部分存档的一个磁盘。在 后一种情况下,将在上找到中心目录和zipfile注释 此存档的最后一个磁盘。 解压:在upload_pnt-prs.zip或 upload_pnt-prs.zip.zip,但找不到upload_pnt-prs.zip.zip,句号


我已经尝试了一些已经解决的解决方案,但这并不能解决我的问题。请帮忙……

也许你应该重新安排标题顺序。 我尝试了下面的代码,它的工作

    $zip = new ZipArchive();
    $filename = $first_name . ".zip";

    if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
        exit("cannot open <$filename>\n");
    }

    $zip->addFile($first_name . ".clean");
    $zip->addFile($first_name . ".log");
    $zip->addFile($first_name . ".result");
    $zip->addFile($first_name . ".txt");
    $zip->close();

    header("Content-type: application/octet-stream"); 
    header("Content-Disposition: attachment; filename=$filename");
    header("Content-length: " . filesize($filename));
    header("Expires: 0"); 
    header("Pragma: public");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header('Cache-Control: max-age=0'); // no cache
    header("Content-Transfer-Encoding: binary");
    ob_end_flush();
    readfile("$filename");
希望这对你有用

header('Pragma: public');   // required
header('Expires: 0');       // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($filename)).' GMT');
header('Cache-Control: private',false);
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($filename)); // provide file size
header('Connection: close');
readfile($filename);
exit();