$ruta_absoluta, 'nombre' => $row['nombre_archivo'] ]; } } if (empty($archivos)) { http_response_code(404); echo "No hay archivos válidos para comprimir."; exit; } $zip_file = tempnam(sys_get_temp_dir(), 'expediente_') . '.zip'; $zip = new ZipArchive(); if ($zip->open($zip_file, ZipArchive::CREATE) !== true) { http_response_code(500); echo "No se pudo crear el archivo ZIP."; exit; } foreach ($archivos as $a) { $zip->addFile($a['ruta'], $a['nombre']); } $zip->close(); header('Content-Type: application/zip'); header('Content-Disposition: attachment; filename="expediente_' . $id_solicitud . '.zip"'); header('Content-Length: ' . filesize($zip_file)); readfile($zip_file); unlink($zip_file); exit; }