InicioHazlo Tu MismoComprimir Archivos ZIP con PHP
Comprimir Archivos ZIP con PHP


Hace algunos dias me encontraba programando un script la cual me permita descargar archivos de mi hosting, pues mi linea de internet andaba media rara y cada vés que descargaba algo desde mi cliente FTP, la linea se me cortaba y bueno decidi hacerlo mediante mi amigo PHP, realizar un Backupeador de archivos (no tenia acceso al cpanel para poder usar filemanager) entonces hize un script el cual me descargaba los archivos a mi PC, pero habian archivos muy pesados y demoraban, no tenia paciencia asi qué pense en comprimirlos para ellos realize el siguiente script.

Funciones.php

[color=#000000] [color=#0000BB]<?php 
[/color][color=#007700]function [/color][color=#0000BB]comprimir[/color][color=#007700]([/color][color=#0000BB]$ruta[/color][color=#007700], [/color][color=#0000BB]$zip_salida[/color][color=#007700], [/color][color=#0000BB]$handle [/color][color=#007700]= [/color][color=#0000BB]false[/color][color=#007700], [/color][color=#0000BB]$recursivo [/color][color=#007700]= [/color][color=#0000BB]false[/color][color=#007700]){ 
  
 
[/color][color=#FF8000]/* Declara el handle del objeto */ 
 [/color][color=#007700]if(![/color][color=#0000BB]$handle[/color][color=#007700]){ 
  [/color][color=#0000BB]$handle [/color][color=#007700]= new [/color][color=#0000BB]ZipArchive[/color][color=#007700]; 
  if ([/color][color=#0000BB]$handle[/color][color=#007700]->[/color][color=#0000BB]open[/color][color=#007700]([/color][color=#0000BB]$zip_salida[/color][color=#007700], [/color][color=#0000BB]ZipArchive[/color][color=#007700]::[/color][color=#0000BB]CREATE[/color][color=#007700]) === [/color][color=#0000BB]false[/color][color=#007700]){ 
   return [/color][color=#0000BB]false[/color][color=#007700]; [/color][color=#FF8000]/* Imposible crear el archivo ZIP */ 
  [/color][color=#007700]} 
 } 
  
 
[/color][color=#FF8000]/* Procesa directorio */ 
 [/color][color=#007700]if([/color][color=#0000BB]is_dir[/color][color=#007700]([/color][color=#0000BB]$ruta[/color][color=#007700])){ 
  [/color][color=#FF8000]/* Aseguramos que sea un directorio sin carácteres corruptos */ 
  [/color][color=#0000BB]$ruta [/color][color=#007700]= [/color][color=#0000BB]dirname[/color][color=#007700]([/color][color=#0000BB]$ruta[/color][color=#007700].[/color][color=#DD0000]'/arch.ext'[/color][color=#007700]);  
  [/color][color=#0000BB]$handle[/color][color=#007700]->[/color][color=#0000BB]addEmptyDir[/color][color=#007700]([/color][color=#0000BB]$ruta[/color][color=#007700]); [/color][color=#FF8000]/* Agrega el directorio comprimido */ 
  [/color][color=#007700]foreach([/color][color=#0000BB]glob[/color][color=#007700]([/color][color=#0000BB]$ruta[/color][color=#007700].[/color][color=#DD0000]'/*'[/color][color=#007700]) as [/color][color=#0000BB]$url[/color][color=#007700]){ [/color][color=#FF8000]/* Procesa cada directorio o archivo dentro de el */ 
   [/color][color=#0000BB]comprimir[/color][color=#007700]([/color][color=#0000BB]$url[/color][color=#007700], [/color][color=#0000BB]$zip_salida[/color][color=#007700], [/color][color=#0000BB]$handle[/color][color=#007700], [/color][color=#0000BB]true[/color][color=#007700]); [/color][color=#FF8000]/* Comprime el subdirectorio o archivo */ 
  [/color][color=#007700]} 
  
 
[/color][color=#FF8000]/* Procesa archivo */ 
 [/color][color=#007700]}else{ 
  [/color][color=#0000BB]$handle[/color][color=#007700]->[/color][color=#0000BB]addFile[/color][color=#007700]([/color][color=#0000BB]$ruta[/color][color=#007700]); 
 } 
  
 
[/color][color=#FF8000]/* Finaliza el ZIP si no se está ejecutando una acción recursiva en progreso */ 
 [/color][color=#007700]if(![/color][color=#0000BB]$recursivo[/color][color=#007700]){ 
  [/color][color=#0000BB]$handle[/color][color=#007700]->[/color][color=#0000BB]close[/color][color=#007700](); 
 } 
  
 return 
[/color][color=#0000BB]true[/color][color=#007700]; [/color][color=#FF8000]/* Retorno satisfactorio */ 
[/color][color=#007700]} 
[/color][color=#0000BB]?>[/color][/color]



Comprimir.php

[color=#000000][color=#0000BB]<?php 
$ruta 
[/color][color=#007700]= [/color][color=#DD0000]'carpeta/'[/color][color=#007700]; [/color][color=#FF8000]//indica la carpeta que desees comprimir 
[/color][color=#007700]if([/color][color=#0000BB]comprimir[/color][color=#007700]([/color][color=#0000BB]$ruta[/color][color=#007700], [/color][color=#DD0000]'archivo.zip'[/color][color=#007700])) 
 echo [/color][color=#DD0000]'Comprimido y Descargado Correctamente'[/color][color=#007700]; 
else 
 echo 
[/color][color=#DD0000]'Error'[/color][color=#007700]; 
[/color][color=#0000BB]?>[/color][/color]



Espero qué les sirva, Saludos.

Datos archivados del Taringa! original
12puntos
1,550visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

a
adrivk096🇦🇷
Usuario
Puntos0
Posts6
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.