Borrar zip una vez descargado

Estaba haciendo un gestor documental y me ha tocado hacer la típica funcionalidad de tener que generar un zip con documentos para que el usuario los descargue, y una vez descargado se elimine el zip para que no sea accesible por el público.

Para ello lo primero es generar el zip:

// nombre del zip a generar (único por si coincide con otra descarga)
$filename =  uniqid('descarga') . '.zip';
// ruta donde vamos a generar el zip
$destination = str_replace('CARPETA_ACTUAL', 'CARPETA_DE_DESTINO/' .  $ filename, __DIR__);
$zip = new ZipArchive;
if ($zip->open($destination, ZipArchive::CREATE) === TRUE) {
// añadimos los ficheros al zip
    $zip->addFile('data.txt', 'zipeado.txt');
    $zip->close();   
}

Y luego procedemos a forzar la descarga y borrarlo

if(file_exists($destination)){
            header('Pragma: public');
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($destination)) . ' GMT');
            header('Content-Type: application/force-download');
            header('Content-Disposition: inline; filename="'.$ filename.'"');
            header('Content-Transfer-Encoding: binary');
            header('Content-Length: ' . filesize($destination));
            header('Connection: close');
            readfile($destination);
            ignore_user_abort(true);
            unlink($destination);
        }
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.