
Mi è capitato ultimamente di dover far scaricare un file pdf. Sia ben chiaro scaricare direttamente e non farlo aprire all’interno di un browser. Questo perché? Spesso (sopratutto con i vecchi browser come ie6 e ie7) quando si deve far scaricare un file pdf questo risulta illeggibile. In problema non è il file che è corrotto ma bensì il browser che ha un bug. Onde evitare problemi si preferisce far scaricare direttamente il file interessato, che potrebbe essere un file pdf o un cvf o un qualsiasi altro file che potrebbe aprirsi in maniera non corretta all’interno del browser
Per risolvere questo problema PHP ci viene incontro. Come? Andando a fare un rewrite dell’estesione del file interessato. Supponiamo abbia il file nome.pdf da far scaricare; andremo ad aprire un file con estensione php per poi risostituirno con l’estensione originale. In questo modo il file verrà scaricato direttamente.
<a href="/pdf/nome.php" target="_blank" title="Clicca per saperne di più »">
<?php $file=$_SERVER['PHP_SELF']; $pieces = explode("/", $file); $pieces_ok= array_reverse($pieces); $array_file= explode(".", $pieces_ok[0]); $nome=$array_file[0]; // We'll be outputting a PDF header('Content-type: application/pdf'); // It will be called downloaded.pdf header('Content-Disposition: attachment; filename="'.$nome.'.pdf"'); // The PDF source is in original.pdf readfile($nome.'.pdf'); ?>