Hbksagar
Hbksagar

Reputation: 557

Unable to view files inside Zip (But has Memory) created using ZipArchive function of php

<?php
       $error = "";
       $file_folder = "temp/";
        // folder to load files
 if (extension_loaded('zip')) {
    // Checking ZIP extension is available
    $zip = new ZipArchive();
    // Load zip library
    $zip_name = "images_".date("d-m-Y") . ".zip";
    // Zip name
    if ($zip -> open($zip_name, ZIPARCHIVE::CREATE) !== TRUE) {
        // Opening zip file to load files
        $error .= "* Sorry ZIP creation failed at this time";
    }
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../uploads/"));
    $files = iterator_to_array($iterator, true);

    foreach ($iterator as $file) {
        $zip -> addFile($file_folder . $file);
        // Adding files into zip
    }
    print_r($zip);
    //echo $zip_name;
    if (file_exists($file_folder.$zip_name)) {
        // push to download the zip
        header('Content-type: application/zip');
        header('Content-Disposition: attachment; filename="' . $zip_name . '"');
        readfile($zip_name);
        // remove zip file is exists in temp path
        unlink($zip_name);
    } else {
        echo "error";
    }

    $zip -> close();
//} else
//  $error .= "* Please select file to zip ";
 } else
$error .= "* You dont have ZIP extension";

?>

I have tried outputting $zip object and got following response: ZipArchive Object ( [status] => 0 [statusSys] => 0 [numFiles] => 12 [filename] => /var/www/bigb/ajax/images_24-12-2012.zip [comment] => )

Status Zero explains there were no errors while creating zip (reference: http://www.php.net/manual/en/zip.constants.php)

I have referred posts: 1) Download all images from a single directory of a website 2) How to create a zip file using php and delete it after user downloads it? 3) http://www.9lessons.info/2012/06/creating-zip-file-with-php.html

Third one helped me the most and in the other 2 i was getting status as 23.

Issue: I am able to create a zip & no issue downloading it but when i open the zip i don't see any files inside but zip has memory in mbs.

Please Help me out...

Update: Error 23 occurs because of print_r / echo and or trying to overwrite same file.

Update2: Issue solved. It was due to path in RecursiveDirectoryIterator (i.e ../uploads/) once i moved the code to main folder and changed the path to (uploads/) everything started working as it should be. Kudos!!!

Upvotes: 4

Views: 953

Answers (2)

Hbksagar
Hbksagar

Reputation: 557

It was due to path in RecursiveDirectoryIterator (i.e ../uploads/) once i moved the code to main folder and changed the path to (uploads/) everything started working as it should be. Kudos!!!

Upvotes: 1

Naveed
Naveed

Reputation: 1221

I think the file path you are providing to $zip->addFile() is incorrect. You don't need to append anything to $file. Following will work:

foreach ($iterator as $file) {
    $zip -> addFile($file);
}

In your case the $file will contain exact relative path of file like ../uploads/file.ext.

Upvotes: 0

Related Questions