Friday 26 June 2015

Read ZIP archive data with PHP

Simple PHP function that can be used to read data of a ZIP archive with PHP. The function receives a string with the path-name of the Zip file; and returns a two dimensional Array with data of each file in archive (name, actual_filesize, compressed_size).
<?php
// Function to Read ZIP Archive. Returns a two dimensional Array with data of each file in archive
function readZipData($zip_file) {
  // PHP-MySQL Course - http://coursesweb.net/php-mysql/
  $zip_data = array();     // will store arrays with data of each file in archive
  $zip = zip_open($zip_file);

  // if the $zip_file is opened, traverse the archive
  if($zip) {
    while ($zip_entry = zip_read($zip)) {
      // adds in $zip_data an array with data of each file in archive
      $zip_data[] = array(
        'name' =>zip_entry_name($zip_entry),
        'actual_filesize' => zip_entry_filesize($zip_entry),
        'compressed_size' => zip_entry_compressedsize($zip_entry)
      );
    }
    zip_close($zip);

    return $zip_data;
  }
  else  echo "Failed to open $zip_file";
}

  /* Example */

//the path-name of the zip file
$zip_file = 'dir/file.zip';

// get data of the $zip_file
$zip_data = readZipData($zip_file);

// output the resulted array (with data for archived files)
echo '<pre>';
var_export($zip_data);
echo '</pre>';
?>
This example will return an array like this:
array (
  0 => 
  array (
    'name' => 'file1.txt',
    'actual_filesize' => 388984,
    'compressed_size' => 114339,
  ),
  1 => 
  array (
    'name' => 'image.jpg',
    'actual_filesize' => 16942,
    'compressed_size' => 16801,
  ),
  2 => 
  array (
    'name' => 'audio/music.mp3',
    'actual_filesize' => 16942,
    'compressed_size' => 16806,
  )
)

0 comments:

Post a Comment