Entonces que me aclare yo... ¿Cómo sería la estructura de todo ello con buffer y zip inluido? Es decir, guardo los datos en el buffer y cómo le puedo decir que una vez los haya guardado los integre en el zip.
Por otra parte en el la creación del zip:
Código PHP:
$archivos = array();
/* Este código comentado nos permite comprimir todo los archivos de una carpeta X
* Si descomentamos este código, no se olivden de comentar el de la variable $archivos = array( ...)
*/
/*foreach(scandir ('download') as $s)
{
if($s != '.' && $s != '..'){
$archivos[] = 'download/' . $s;
}
}*/
// Creamos el array que contiene los archivos a comprimir
$archivos = array(
'download/MGS.jpg',
'download/RE-2.jpg'
);
// Nombre que usaremos para el zip
$zip_nombre = 'mi-archivo.zip';
// Instanciamos la clase, esta viene en el paquete de PHP
$zip = new ZipArchive();
$zip->open($zip_nombre, ZipArchive::CREATE);
// Agregamos los archivos a comprimir
foreach ($archivos as $a){
/* Removemos la palabra 'download/', ya que si no hacemos esto
* va a crear el zip dentro de una carpeta llamada download
* Tip: si queremos crear archivos comprimidos dentro de carpetas
* ya saben como hacerlo ;) */
$zip->addFile($a, str_replace('download/', '', $a));
}
$zip->close();
// Forzamos la descarga
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zip_nombre);
header('Content-Length: ' . filesize($zip_nombre));
readfile($zip_nombre);
// Eliminamos el archivo que se creo en nuestro host
unlink($zip_nombre);
Cuando creamos el array donde integramos los datos, ¿Hay alguna manera de indicarle que los datos son del buffer?
Código PHP:
$archivos = array(
'download/MGS.jpg',
'download/RE-2.jpg'
¡Gracias!