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):
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):
Se vi dà errore alla riga dove è presente la funzione mime_content_type (deprecata), sostituitela con:
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 Mattia il 03/12/2008.