Breaking

Post Top Ad

Your Ad Spot

domingo, 10 de marzo de 2019

Crear archivo ZIP usando PHP


El ZIP es un formato de archivo comúnmente utilizado para archivar archivos con compresión de datos. Cuando desee permitir que el usuario descargue varias carpetas y archivos desde el servidor, debe crear un archivo ZIP sobre la marcha. Ayuda a comprimir archivos y archivar para descargar varios archivos a la vez. La creación de archivos ZIP desde el script PHP es simple, como la funcionalidad de agregar a archivar en el escritorio.
La creación de un archivo ZIP desde el directorio se puede implementar fácilmente usando PHP. La clase ZipArchive en PHP proporciona una capacidad instantánea para comprimir archivos o carpetas en el archivo ZIP. Puede archivar el directorio completo de forma recursiva en un archivo ZIP usando PHP. En este tutorial, le mostraremos cómo crear un archivo ZIP desde la carpeta usando PHP .

Clase ZipArchiver

La clase ZipArchiver ayuda a crear un archivo ZIP desde la carpeta (archivos y subdirectorios) en el servidor usando PHP ZipArchive .
  • zipDir () : esta función crea Zip de una carpeta de forma recursiva, incluido el directorio principal.
    • $sourcePath - Ruta relativa del directorio a ser comprimido.
    • $outZipPath - Ruta del archivo zip de salida.
  • dirToZip () : es una función auxiliar de la clase ZipArchiver que agrega archivos y subdirectorios en una carpeta al archivo zip.
<? php Class  ZipArchiver  { 
    
    / ** 
     * Comprimir una carpeta (incluso ella misma). 
     *  
     * Uso: 
     * Ruta de la carpeta que debe estar comprimida. 
     *  
     * @param $ sourcePath string 
     * Ruta  relativa del directorio a ser comprimido. 
     *  
     * @param $ outZipPath string  
     * Ruta del archivo zip de salida. 
     * 
     * / 
    public static function  zipDir ( $ sourcePath $ outZipPath ) { 
        $ pathInfo  pathinfo ( $ sourcePath ); 
        $ parentPath  $ pathInfo ['dirname' ]; 
        $ dirName  $ pathInfo [ 'basename' ]; 
    
        $ z  = new  ZipArchive (); 
        $ z -> abierto ( $ outZipPath ZipArchive :: CREATE ); 
        $ z -> addEmptyDir ( $ dirName ); 
        if ( $ sourcePath  ==  $ dirName ) { 
            self :: dirToZip ( $ sourcePath $ z 0 ); 
        } else { 
            self :: dirToZip ($ sourcePath $ z strlen ( " $ parentPath /" )); 
        } 
        $ z -> cerrar (); 
        
        volver  verdadera ; 
    } 
    
    / ** 
     * Agregar archivos y subdirectorios en una carpeta al archivo zip. 
     *  
     * @param $ folder string 
     * Ruta de la carpeta que debe estar comprimida. 
     *  
     * @param $ zipFile ZipArchive 
     * Archivo zip donde los archivos terminan. 
     *  
     * @param $ exclusiveLength int  
     * Número de texto que se excluirá de la ruta del archivo. 
     * 
     * /
    función estática privada  dirToZip ( $ folder , & $ zipFile $ exclusiveLength ) { 
        $ handle  opendir ( $ folder ); 
        while ( FALSE  ! ==  $ f  readdir ( $ handle )) { 
            // Busque la ruta local / principal o el archivo comprimido y salte 
            si ( $ f  ! =  '.'  &&  $ f  ! =  '..'  &&  $ f  ! =  nombre base ( __FILE__ )) { 
                $ filePath  " $ folder/ $ f " ; 
                // Elimine el prefijo de la ruta del archivo antes de agregar a zip 
                $ localPath  substr ( $ filePath $ exclusiveLength ); 
                if ( is_file ( $ filePath )) { 
                    $ zipFile -> addFile ( $ filePath $ localPath ); 
                } elseif ( is_dir ( $ filePath )) { 
                    // Agregar el subdirectorio 
                    $ zipFile -> addEmptyDir ( $ localPath ); 
                    self :: dirToZip ($ filePath $ zipFile $ exclusiveLength ); 
                } 
            } 
        } 
        closedir ( $ handle ); 
    } 
    
}

Crea ZIP en PHP

Use la clase ZipArchiver para archivar todos los archivos y subdirectorios de la carpeta dada y crear un archivo ZIP desde el script en PHP.
  • Incluir e inicializar la clase ZipArchive.
  • Especifique la ruta del directorio que desea archivar como un ZIP.
  • Especifique la ruta para guardar el archivo ZIP en el servidor.
  • Llame a la zipDir()función de la clase ZipArchiver para crear ZIP.
// Incluir e inicializar la clase ZipArchive require_once  'ZipArchiver.class.php' ; $ cremallera  = nuevo  ZipArchiver ; 
// Ruta del directorio a ser comprimido $ dirPath  '/ path / to / sourceDir' ; 
// Ruta del archivo zip de salida $ zipPath  '/ path / to / archive-' . tiempo (). '.zip' ; 
// Crear archivo zip $ zip  $ zipper -> zipDir ( $ dirPath $ zipPath ); 

if ( $ zip ) { 
    echo  'Archivo ZIP creado correctamente.'; 
} else { 
    echo  'Error al crear ZIP.' ; 
}

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas