¿Cómo leo un archivo zip?

Hola que tal saludos...
Este es mi Caso:
Como leo un archivo ZIP desde php.
¿Bueno para que?
Al momento que estoy leyendo el contenido del zip
desearía extraer la información la lista de archivos... La idea es leer imágenes(png, jpg, gif...) si es imagen, la extraigo y la mando al server creando una carpeta con el nombre ya sea del zip o lo que quiera el usuario
Por ejemplo:
Fiesta.zip
Contiene:
1.jpg
2.gif
3.doc
4.jpg
DARK<carpeta>
2.jpg
Idea:
Leo($zip);
function Leo($zip,$destino){
//Obtengo la lista del Zip (bueno primero que nada me aseguro que sea zip:))
// SI ES IMAGEN (jpg,gif,png) copio a $destino
//si no leo siguiente o reporto algo
}
2

2 respuestas

Respuesta
1
Chequea:
http://ar2.php.net/manual/es/ref.zlib.php
Respuesta
1
¿Tu lo probaste? Yo lo hice rápido y no lo probé mucho pero según me dice el zip_entry_read en el Manual de PHP lo que hace es leer el contenido de un directorio abierto. Yo no he trabajado mucho con las funciones de ZIP de eso esa que te mande la tomé del manual de PHP.
Saludos:
El código me ha sido de gran utilidad,
ejemplo:
pic.zip
Contiene
*Algunas_Caracteristicas_medium.png
*Console.png
*Ejecucion_MenuApp.exe.png
La S A L I D A es:
***************************************
Name: Algunas_Caracteristicas_medium.png
Actual Filesize: 143976
Compressed Size: 117465
Compression Method: deflated
File Contents: Name: Console.png
Actual Filesize: 23873
Compressed Size: 22027
Compression Method: deflated
File Contents: Name: Ejecucion_MenuApp.exe.png
Actual Filesize: 13369
Compressed Size: 13180
Compression Method: deflated
File Contents: 3
***************************************
Comentando la linea de
//echo "$buf\n";
¿Mi pregunta es el $buf que me regresa es el contenido de la imagen?
Y si existe alguna manera de convertir el buf que me regresa en su formato original(descompactarlo)...
Gracias de Antemano...
Primero que nada decirte que esto lo he probado en Windows no así en Linux. Para poder trabajar con ZIP necesitas la extensión que viene en el PECL de PHP para Windows (son unas DLL que debes copiar a la carpeta "ext" dee tu PHP). Lo puedes bajar desde: http://www.php.net/get/pecl-5.1.4-Win32.zip/from/a/mirror
Luego la añades al php.ini y activas la extensión.
Ahora vamos al código:
<?php
$zip = zip_open("/tmp/test2.zip");
if ($zip) {
while ($zip_entry = zip_read($zip)) {
echo "Name: " . zip_entry_name($zip_entry) . "\n";
echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n";
echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n";
echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";
if (zip_entry_open($zip, $zip_entry, "r")) {
echo "File Contents:\n";
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
echo "$buf\n";
zip_entry_close($zip_entry);
}
echo "\n";
}
zip_close($zip);
}
?>
Dime si te sirve o no.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas