Ciao a tutti,
ho una semplice esigenza di forzare il download di un file su un sito, cioè cliccando du un link ad un allegato voglio che mi esca la famosa finestrella che mi consenta di salvare su disco il file.
Facendo una ricerca ho trovato diverse risposte ma non capisco dove sto sbagliando visto che il browser tenta di aprire lui il file.
In pratica ho creato un file PHP dentro il quale ho scritto questo:
<?
$file_rif = "11\\1197284735.pdf";
forceDownload($file_rif);
function forceDownload($file) {
if(file_exists($file) && is_readable($file)) {
$filename = basename($file);
if(strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), 'MSIE') !== false && strpos($filename, '.') !== false) {
$parsename = explode('.', $filename);
$last = count($parsename) - 1;
$filename = implode('%2E', array_slice($parsename, 0, $last));
$filename .= '.'.$parsename[$last];
}
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Length:'.filesize($file));
header('Content-Transfer-Encoding: binary');
readfile($file);
exit(0);
}
}
?>
...quindi dalla mia pagina del sito lancio questo pagina ma come risultato ho che mi viene aperto nel browser il file.
Dove sto sbagliando???
Grazie
Antonio
ho una semplice esigenza di forzare il download di un file su un sito, cioè cliccando du un link ad un allegato voglio che mi esca la famosa finestrella che mi consenta di salvare su disco il file.
Facendo una ricerca ho trovato diverse risposte ma non capisco dove sto sbagliando visto che il browser tenta di aprire lui il file.
In pratica ho creato un file PHP dentro il quale ho scritto questo:
<?
$file_rif = "11\\1197284735.pdf";
forceDownload($file_rif);
function forceDownload($file) {
if(file_exists($file) && is_readable($file)) {
$filename = basename($file);
if(strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), 'MSIE') !== false && strpos($filename, '.') !== false) {
$parsename = explode('.', $filename);
$last = count($parsename) - 1;
$filename = implode('%2E', array_slice($parsename, 0, $last));
$filename .= '.'.$parsename[$last];
}
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Length:'.filesize($file));
header('Content-Transfer-Encoding: binary');
readfile($file);
exit(0);
}
}
?>
...quindi dalla mia pagina del sito lancio questo pagina ma come risultato ho che mi viene aperto nel browser il file.
Dove sto sbagliando???
Grazie
Antonio