PHP zip下载有效,但文件浏览器中的文件无效

时间:2019-06-04 15:31:59

标签: php html download zip

我有一个脚本来创建.zip并从我的Apache服务器下载。 zip已创建并下载。

但是,尝试在文件资源管理器中提取时,zip显示为无效,但在Macbook pro上可以完美运行,并且如果我使用的Winrar与Windows本机压缩软件(文件资源管理器)相对,则也可以使用。

我尝试排除故障并在Stack Overflow上发帖。尝试更改http标头。

<?php 

if (ob_get_level()) ob_end_clean();

// Create ZIP file
if(isset($_POST['create'])){
  $zip = new ZipArchive();
  $filename = "./myzipfile.zip";

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

  $dir = '../uploads/graeme_upload/';

  // Create zip
  createZip($zip,$dir);

  $zip->close();
}

// Create zip
function createZip($zip,$dir){
  if (is_dir($dir)){

    if ($dh = opendir($dir)){
       while (($file = readdir($dh)) !== false){

         // If file
         if (is_file($dir.$file)) {
            if($file != '' && $file != '.' && $file != '..'){

               $zip->addFile($dir.$file);
            }
         }else{
            // If directory
            if(is_dir($dir.$file) ){

              if($file != '' && $file != '.' && $file != '..'){

                // Add empty directory
                $zip->addEmptyDir($dir.$file);

                $folder = $dir.$file.'/';

                // Read data of the folder
                createZip($zip,$folder);
              }
            }

         }

       }
       closedir($dh);
     }
  }
}

// Download Created Zip file
ob_start();
if(isset($_POST['download'])){

  $filename = "myzipfile.zip";

if (file_exists($filename)) {
    $quoted_filename = basename(addcslashes($filename, "\0..\37\"\177"));
    header("Content-Disposition: attachment; filename=\"{$quoted_filename}\"");
    header('Content-Type: application/zip');
    header("Content-Transfer-Encoding: Binary");
    header('Content-Length: '.filesize($filename));
    readfile($filename);

}
}?>

预期结果:有效的已下载.zip文件夹。

0 个答案:

没有答案