codice)) { $ente = $pdo->go("SELECT codice, denominazione, dominio, esportazione, password_esportazione, giorni_durata_esportazione, data_richiesta_esportazione FROM b_enti WHERE codice = :codice AND esportazione = 'completa'", [":codice" => $data->codice])->fetch(PDO::FETCH_ASSOC); if(! empty($ente["codice"])) { $zipFile = "{$config["mediaFolder"]}/{$ente["codice"]}/esportazione.zip"; if(! empty($data->hash) && password_verify("{$ente["codice"]}-{$ente["dominio"]}-EXPORT-TUTTOGARE", $data->hash) && file_exists($zipFile)) { if(! empty($_POST["password_esportazione"]) && password_verify($_POST["password_esportazione"], $ente["password_esportazione"])) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="esportazione-tenant-' . $ente["codice"] .'.zip"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($zipFile)); // Pulisci il buffer di output ob_clean(); flush(); // Apri il file in modalità lettura binaria $handle = fopen($zipFile, 'rb'); if ($handle === false) { die("Could not open file for reading."); } $chunkSize = 10 * 1024 * 1024; // 10MB // Leggi e invia il file in chunk while (!feof($handle)) { // Leggi il chunk dal file $chunk = fread($handle, $chunkSize); // Invia il chunk al client echo $chunk; // Pulisci il buffer di output ob_flush(); flush(); } // Chiudi il file fclose($handle); exit; } $print_css = function($required_css) { foreach ($required_css as $css) { echo << HTML; } }; $scadenza = date('c', strtotime("+{$ente["giorni_durata_esportazione"]} days", strtotime($ente["data_richiesta_esportazione"]))); echo <<