简体   繁体   中英

PHP- ZipArchive 0 byte files

I'm trying to download a folder as zip but I always get a zip with 0 byte files. I tried all the solutions found on the internet but it did not help. This is the code:

  $files= scandir($dir);
  $zip = new ZipArchive();


  $tmp_file = tempnam('.','');
  if (  $zip->open($tmp_file, ZipArchive::CREATE)===TRUE) {
    # loop through each file
    foreach($files as $file){

        # download file
        $download_file = file_get_contents($file);

        #add it to the zip
        $zip->addFromString(basename($file),$download_file);

    }

    # close zip
    $zip->close();

    # send the file to the browser as a download
    header("Content-disposition: attachment; filename=$nome_dir.zip");
    header("Content-length: " . filesize($tmp_file));
    header('Content-type: application/zip');
    readfile($tmp_file);
  }

I can not understand where I'm wrong

This may be related to Memory Allocation issues in PHP, eg My PHP zip function is using too much memory

Also check this: https://www.airpair.com/php/fatal-error-allowed-memory-size

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM