Класс позволяет создавать zip-файлы с иерархией папок
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- /**
- * Class to dynamically create a zip file (archive)
- *
- * @author Rochak Chauhan
- */
- class createZip {
- public $endOfCentralDirectory = "\\x50\\x4b\\x05\\x06\\x00\\x00\\x00\\x00"; //end of Central directory record
- public $oldOffset = 0;
- /**
- * Function to create the directory where the file(s) will be unzipped
- *
- * @param $directoryName string
- *
- */
- public function addDirectory($directoryName) {
- $feedArrayRow = "\\x50\\x4b\\x03\\x04";
- $feedArrayRow .= "\\x0a\\x00";
- $feedArrayRow .= "\\x00\\x00";
- $feedArrayRow .= "\\x00\\x00";
- $feedArrayRow .= "\\x00\\x00\\x00\\x00";
- $feedArrayRow .= $directoryName;
- $this -> compressedData[] = $feedArrayRow;
- $addCentralRecord = "\\x50\\x4b\\x01\\x02";
- $addCentralRecord .="\\x00\\x00";
- $addCentralRecord .="\\x0a\\x00";
- $addCentralRecord .="\\x00\\x00";
- $addCentralRecord .="\\x00\\x00";
- $addCentralRecord .="\\x00\\x00\\x00\\x00";
- $ext = "\\x00\\x00\\x10\\x00";
- $ext = "\\xff\\xff\\xff\\xff";
- $this -> oldOffset = $newOffset;
- $addCentralRecord .= $directoryName;
- $this -> centralDirectory[] = $addCentralRecord;
- }
- /**
- * Function to add file(s) to the specified directory in the archive
- *
- * @param $directoryName string
- *
- */
- public function addFile($data, $directoryName) {
- $feedArrayRow = "\\x50\\x4b\\x03\\x04";
- $feedArrayRow .= "\\x14\\x00";
- $feedArrayRow .= "\\x00\\x00";
- $feedArrayRow .= "\\x08\\x00";
- $feedArrayRow .= "\\x00\\x00\\x00\\x00";
- $feedArrayRow .= $directoryName;
- $feedArrayRow .= $gzCompressedData;
- $this -> compressedData[] = $feedArrayRow;
- $addCentralRecord = "\\x50\\x4b\\x01\\x02";
- $addCentralRecord .="\\x00\\x00";
- $addCentralRecord .="\\x14\\x00";
- $addCentralRecord .="\\x00\\x00";
- $addCentralRecord .="\\x08\\x00";
- $addCentralRecord .="\\x00\\x00\\x00\\x00";
- $this -> oldOffset = $newOffset;
- $addCentralRecord .= $directoryName;
- $this -> centralDirectory[] = $addCentralRecord;
- }
- /**
- * Fucntion to return the zip file
- *
- * @return zipfile (archive)
- */
- public function getZippedfile() {
- return
- $data.
- $controlDirectory.
- $this -> endOfCentralDirectory.
- "\\x00\\x00";
- }
- /**
- *
- * Function to force the download of the archive as soon as it is created
- *
- * @param archiveName string - name of the created archive file
- */
- public function forceDownload($archiveName) {
- $headerInfo = '';
- }
- // Security checks
- if( $archiveName == "" ) {
- echo "<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> The download file was NOT SPECIFIED.</body></html>";
- exit;
- }
- echo "<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> File not found.</body></html>";
- exit;
- }
- }
- }
- ?>