file_get_contents("zip:///a/b/c.zip")
está volviendo NULL
. ¿Cómo puedo leer los contenidos descomprimidos de un archivo zip en PHP 5+?La mejor manera de leer el archivo zip en PHP
Respuesta
Use zip_open
y zip_read
funciones para hacerlo. documentación a que se pueden encontrar en http://pl2.php.net/manual/en/function.zip-read.php
<?php
/**
* This method unzips a directory within a zip-archive
*
* @author Florian 'x!sign.dll' Wolf
* @license LGPL v2 or later
* @link http://www.xsigndll.de
* @link http://www.clansuite.com
*/
function extractZip($zipFile = '', $dirFromZip = '')
{
define(DIRECTORY_SEPARATOR, '/');
$zipDir = getcwd() . DIRECTORY_SEPARATOR;
$zip = zip_open($zipDir.$zipFile);
if ($zip)
{
while ($zip_entry = zip_read($zip))
{
$completePath = $zipDir . dirname(zip_entry_name($zip_entry));
$completeName = $zipDir . zip_entry_name($zip_entry);
// Walk through path to create non existing directories
// This won't apply to empty directories ! They are created further below
if(!file_exists($completePath) && preg_match('#^' . $dirFromZip .'.*#', dirname(zip_entry_name($zip_entry))))
{
$tmp = '';
foreach(explode('/',$completePath) AS $k)
{
$tmp .= $k.'/';
if(!file_exists($tmp))
{
@mkdir($tmp, 0777);
}
}
}
if (zip_entry_open($zip, $zip_entry, "r"))
{
if(preg_match('#^' . $dirFromZip .'.*#', dirname(zip_entry_name($zip_entry))))
{
if ($fd = @fopen($completeName, 'w+'))
{
fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
fclose($fd);
}
else
{
// We think this was an empty directory
mkdir($completeName, 0777);
}
zip_entry_close($zip_entry);
}
}
}
zip_close($zip);
}
return true;
}
// The call to exctract a path within the zip file
extractZip('clansuite.zip', 'core/filters');
?>
vistazo a la estructura en funciones zip: http://php.net/manual/en/book.zip.php
Me gusta la clase "ZipArchive". –
zip://
El protocolo es proporcionada por el ZIP extension de PHP. Verifique en su salida phpinfo()
si la extensión ha sido instalada o no.
de phpinfo(): Zip => Activado Versión Extensión => $ Id: php_zip.c, v 1.1.2.38 08/06/2007 22:02:32 bjori Exp $ versión Zip => 2.0. 0 Versión Libzip => 0.7.1 Corrientes PHP registradas => zip, php, archivo, datos, http, ftp, compress.bzip2, compress.zlib, https, ftps – Sam
¿Ha comprobado si el archivo que intenta abrir es en realidad un archivo '.zip' válido? – joschi
%> archivo test.zip test.zip: datos de archivo Zip, al menos v2.0 para extraer – Sam
uso ZipArchive
clase
$zip = new ZipArchive;
$zip->open('test.zip');
echo $zip->getFromName('filename.txt');
$zip->close();
- 1. Leer archivos CSV desde el archivo Zip
- 2. Leer un archivo zip y escribirlo en otro archivo python
- 3. Manera con menos memoria para leer un archivo en PHP
- 4. Ruby: la forma más sencilla de leer un archivo de texto dentro de un archivo zip
- 5. error de archivo zip al leer en una url https
- 6. Zip Stream en PHP
- 7. Obteniendo una excepción "No se puede leer como archivo zip" al intentar obtener una transmisión de un archivo Zip interno (un Zip dentro de otro Zip)
- 8. ¿La mejor manera de documentar el código AJAX + PHP?
- 9. ¿Cuál es la mejor manera de leer un archivo completo en std :: string en C++?
- 10. Crear un archivo zip utilizando PHP clase ZipArchive sin escribir el archivo en el disco?
- 11. La mejor manera de hacer hooks PHP
- 12. ¿Cuál es la mejor manera de leer un archivo de texto delimitado por tabulaciones en C#
- 13. ¿Cuál es la mejor manera de abrir y leer un archivo en Perl?
- 14. ¿La mejor manera de incluir archivos en PHP?
- 15. ¿Cuál es la mejor manera de leer GetResponseStream()?
- 16. cómo leer el archivo XML de la URL utilizando php
- 17. En PHP, ¿es posible inspeccionar el contenido de un archivo Zip sin extraer primero su contenido?
- 18. Cómo leer el archivo XML de iTunes en PHP
- 19. Lea un archivo zip dentro del archivo zip
- 20. ¿Cuál es la mejor manera de analizar el gran archivo JSON e insertarlo en la base de datos utilizando php?
- 21. Leer la salida de eco de otro archivo PHP
- 22. Error al leer el archivo de texto en php
- 23. La mejor manera de ir sobre las propiedades de archivo
- 24. XNA: ¿La mejor manera de cargar y leer un archivo XML?
- 25. ¿cuál es la mejor manera de editar el archivo csv
- 26. PHP: Leer de cierto punto en el archivo
- 27. Tipo de archivo DOCX en PHP finfo_file es application/zip
- 28. En la memoria, descargue y extraiga el archivo zip
- 29. Descarga del archivo .zip se ejecuta un archivo dañado php
- 30. ¿Cuál es la mejor manera de escribir un archivo grande en un disco en PHP?
'if ($ zip)' no funciona, se debe utilizar si '(is_resource ($ zip))'. Ver ['zip_open'] (http://php.net/manual/fr/function.zip-open.php). Además, el enlace proporcionado en la respuesta ya no está disponible. – kjaquier