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\');
