How to use unzipper php
Web designers and developers know how it’s necessary to compress files into one zip archive when it comes to uploading a huge number of files to the server. This also means that you need to unzip the file after downloading it. If you have to copy scripts containing a large number of files (for example, content management systems, blogs) to the FTP server quite often, then you can use a more convenient way to
upload them. First of all, pack them in a ZIP archive and later unpack them directly on the server. Today, we’ve shown how to do this using unzipper.php script. Post navigation The Unzipper is a PHP script that extracts .zip, .rar or .gz archives on webservers. • To download the script, click on this link: Download PHP Unzipper (79 KB). Requirements - PHP 5.3 and newer. Usage 1. Copy the script code from this page, or Download it from the link above, and save it into a .php file on your server (unzipper.php). PHP Unzipper script codeClick on the code to select it. prepareExtraction($archive, $destination); } //Create zip archive if(isset($_POST['dozip'])){ $zippath = !empty($_POST['zippath']) ? strip_tags($_POST['zippath']) :'.'; // Resulting zipfile e.g. zipper--2016-07-23--11-55.zip $zipfile = 'zipper-'. date('Y-m-d--H-i') .'.zip'; Zipper::zipDir($zippath, $zipfile); } $timeend = microtime(TRUE); $time = $timeend - $timestart; /** * Class Unzipper */ class Unzipper { public $localdir ='.'; public $zipfiles = array(); public function __construct(){ //read directory and pick .zip and .gz files if($dh = opendir($this->localdir)){ while (($file = readdir($dh)) !== FALSE){ if(pathinfo($file, PATHINFO_EXTENSION)==='zip' || pathinfo($file, PATHINFO_EXTENSION)==='gz' || pathinfo($file, PATHINFO_EXTENSION)==='rar') $this->zipfiles[] = $file; } closedir($dh); if(!empty($this->zipfiles)) $GLOBALS['status'] = array('info'=>'.zip or .gz or .rar files found, ready for extraction'); else $GLOBALS['status'] = array('info'=>'No .zip or .gz or rar files found. So only zipping functionality available.'); } } // Prepare and check zipfile for extraction public function prepareExtraction($archive, $destination){ // Determine paths. if(empty($destination)) $extpath = $this->localdir; else { $extpath = $this->localdir .'/'. $destination; // todo move this to extraction function if(!is_dir($extpath)) mkdir($extpath); } //allow only local existing archives to extract if(in_array($archive, $this->zipfiles)) self::extract($archive, $extpath); } //Checks file extension and calls suitable extractor functions public static function extract($archive, $destination){ $ext = pathinfo($archive, PATHINFO_EXTENSION); switch($ext){ case 'zip': self::extractZipArchive($archive, $destination); break; case 'gz': self::extractGzipFile($archive, $destination); break; case 'rar': self::extractRarArchive($archive, $destination); break; } } //Decompress/extract a zip archive using ZipArchive public static function extractZipArchive($archive, $destination){ // Check if webserver supports unzipping. if(!class_exists('ZipArchive')){ $GLOBALS['status'] = array('error'=>'Error: Your PHP version does not support unzip functionality.'); return; } $zip = new ZipArchive; // Check if archive is readable. if($zip->open($archive)===TRUE){ // Check if destination is writable if(is_writeable($destination .'/')){ $zip->extractTo($destination); $zip->close(); $GLOBALS['status'] = array('success'=>'Files unzipped successfully'); } else $GLOBALS['status'] = array('error'=>'Error: Directory not writeable by webserver.'); } else $GLOBALS['status'] = array('error'=>'Error: Cannot read .zip archive.'); } // Decompress a .gz File public static function extractGzipFile($archive, $destination){ // Check if zlib is enabled if(!function_exists('gzopen')){ $GLOBALS['status'] = array('error'=>'Error: Your PHP has no zlib support enabled.'); return; } $filename = pathinfo($archive, PATHINFO_FILENAME); $gzipped = gzopen($archive, 'rb'); $file = fopen($filename, 'w'); while($string = gzread($gzipped, 4096)) fwrite($file, $string, strlen($string)); gzclose($gzipped); fclose($file); // Check if file was extracted. if(file_exists($destination .'/'. $filename)) $GLOBALS['status'] = array('success'=>'File unzipped successfully.'); else $GLOBALS['status'] = array('error'=>'Error unzipping file.'); } //Decompress/extract a Rar archive using RarArchive public static function extractRarArchive($archive, $destination){ // Check if webserver supports unzipping. if(!class_exists('RarArchive')){ $GLOBALS['status'] = array('error'=>'Error: Your PHP version does not support .rar archive functionality. How to install RarArchive'); return; } // Check if archive is readable. if($rar = RarArchive::open($archive)){ // Check if destination is writable if(is_writeable($destination .'/')){ $entries = $rar->getEntries(); foreach ($entries as $entry){ $entry->extract($destination); } $rar->close(); $GLOBALS['status'] = array('success'=>'Files extracted successfully.'); } else $GLOBALS['status'] = array('error'=>'Error: Directory not writeable by webserver.'); } else $GLOBALS['status'] = array('error'=>'Error: Cannot read .rar archive.'); } } /** * Class Zipper * * Copied and slightly modified from http://at2.php.net/manual/en/class.ziparchive.php#110719 * @author umbalaconmeogia */ class Zipper { /** * Add files and sub-directories in a folder to zip file. * * @param string $folder * Path to folder that should be zipped. * * @param ZipArchive $zipFile * Zipfile where files end up. * * @param int $exclusiveLength * Number of text to be exclusived from the file path. */ private static function folderToZip($folder, &$zipFile, $exclusiveLength){ $handle = opendir($folder); while(FALSE !== $f = readdir($handle)){ // Check for local/parent path or zipping file itself and skip. if($f !='.' && $f != '..' && $f != basename(__FILE__)){ $filePath = $folder .'/'. $f; // Remove prefix from file path before add to zip. $localPath = substr($filePath, $exclusiveLength); if(is_file($filePath)) $zipFile->addFile($filePath, $localPath); else if(is_dir($filePath)){ // Add sub-directory. $zipFile->addEmptyDir($localPath); self::folderToZip($filePath, $zipFile, $exclusiveLength); } } } closedir($handle); } /** * Zip a folder (including itself). * Usage: * Zipper::zipDir('path/to/sourceDir', 'path/to/out.zip'); * * @param string $sourcePath * Relative path of directory to be zipped. * * @param string $outZipPath * Relative path of the resulting output zip file. */ public static function zipDir($sourcePath, $outZipPath){ $pathInfo = pathinfo($sourcePath); $parentPath = $pathInfo['dirname']; $dirName = $pathInfo['basename']; $z = new ZipArchive(); $z->open($outZipPath, ZipArchive::CREATE); $z->addEmptyDir($dirName); if($sourcePath == $dirName) self::folderToZip($sourcePath, $z, 0); else self::folderToZip($sourcePath, $z, strlen($parentPath.'/')); $z->close(); $GLOBALS['status'] = array('success'=>'Successfully created archive '. $outZipPath); } } ?> Unzipper version: Screenshot• Scipt Page: github.com/ndeet/unzipperHow do I unzip a file with Unzipper?Right-click the file you want to zip, and then select Send to > Compressed (zipped) folder. Open File Explorer and find the zipped folder. To unzip the entire folder, right-click to select Extract All, and then follow the instructions. To unzip a single file or folder, double-click the zipped folder to open it.
How do I unzip a PHP file?Description: Create an object of the ZipArchive class and open a given zip file using $zip->open() method. If it returns TRUE then extract the file to the specified path with extractTo() method by passing path address as an argument in it. Example 2: This example unzip the specific file from the folder.
How do I unzip a file on a server?Step 1 – Log In to Your Server with SSH. SSH terminal command in MyKinsta. ... . SSH terminal window. ... . Navigate to the directory containing your ZIP file. ... . List files in Terminal. ... . Unzip files in Terminal. ... . Verify unzipped files.. |