PHP: Finestra del download cliccando su un link

Per far apparire la finestra dei download invece che aprire i file direttamente nel browser si possono far passare i download attraverso uno script in PHP.
Lo script è il seguente (si deve personalizzare la variabile $path per specificare il percorso della cartella che contiene i file da far scaricare):
<?php
$path = 'percorso/della/cartella/';
$file = isset($_GET['file']) ? trim($_GET['file']) : '';
$file = str_replace('/','',str_replace('\\','',$file));
if($file!='' && file_exists($path.$file)){
	ob_start();
	header('HTTP/1.0 200 OK');
	header('Cache-Control: public, must-revalidate');
	header('Pragma: hack');
	header('Content-type: '.mime_content_type($path.$file));
	header('Content-Disposition: attachment; filename="'.$file.'"');
	header('Content-Transfer-Encoding: binary');
	header('Content-Length: '.filesize($path.$file));
	ob_end_clean();
	readfile($path.$file);
}
?>


Il link nella pagina sarà in questo modo ("download.php" è il nome della pagina che conterrà lo script precedente e "file.ext" è il nome del file da scaricare):
<a href="download.php?file=file.ext">Link</a>


Se vi dà errore alla riga dove è presente la funzione mime_content_type (deprecata), sostituitela con:
header('Content-type: octet/stream');

Guida scritta da il 03/12/2008.

Le ultime guide della categoria PHP:

comments powered by Disqus