Заархивируйте все файлы в каталогах и принудительно загрузите

У меня на сайте запущен следующий код. Единственная проблема, с которой я столкнулся, заключается в том, что он создает zip-файл на сервере, а затем загружает его пользователем.

Я хотел бы знать, что мне делать, чтобы zip-файл создавался «на лету» без предварительного сброса на диск сервера. Я также хотел бы, чтобы пользователь мог приостановить / возобновить загрузку.

//function for zip
function zipFilesAndDownload($file_names,$archive_file_name,$file_path)
{
  //create the object
  $zip = new ZipArchive();
  //create the file and throw the error if unsuccessful
  if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )!==TRUE) {
    exit("cannot open <$archive_file_name>\n");
  }

  //add each files of $file_name array to archive
  foreach($file_names as $files)
  {


  $zip->addFile($file_path.str_replace('./','',$files),translit($files).".mp3");
  }
  $zip->close();

  //then send the headers to foce download the zip file
  header("Content-type: application/zip");
  header("Content-Disposition: attachment; filename=$archive_file_name");
  header("Pragma: no-cache");
  header("Expires: 0");
  readfile("$archive_file_name");
  exit;
}
6
задан mac 5 December 2011 в 23:03
поделиться