Download di file senza svelarne il percorso

Può essere utile in alcuni casi permettere il download di files senza però mostrarne il percorso e quindi la directory dove sono contenuti.
Utile nei casi in cui si vuole impedire di sfogliare la directory non svelandola, appunto (anche se sarebbe sempre meglio impedirlo direttamente dall'httpd.conf o con un file .htaccess)
Oppure quando i file sono in una directory all'interno del server ma non raggiungibile via web.
Il link non deve quindi essere verso il file da scaricare ma verso una pagina php (es. download.php) alla quale passerai il nome del file come variabile, in questo modo:

  1. <a href="download.php?file=nomefile.zip">Scarica</a>

il file download.php sarà invece strutturato così.

  1. <?php
  2. $file=$_GET['file'];
  3. $percorso="/var/percorso/directory/download/";
  4. $percorso_file=$percorso.$file;
  5. $dimensione_file=filesize($percorso_file);
  6. header("Content-Type: application; name=".$file);
  7. header("Content-Transfer-Encoding: binary");
  8. header("Content-Length: ".$dimensione_file);
  9. header("Content-Disposition: inline; filename=".$file);
  10. header("Expires: 0");
  11. header("Cache-Control: no-cache, must-revalidate");
  12. header("Cache-Control: private");
  13. header("Pragma: public");
  14. readfile($percorso_file);
  15. ?>

Update: inoltre con poche altre righe di php, utilizzando questo sistema è possibile monitorare il download.

Altri articoli di interesse

Quanto è stato utile questo articolo?
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

2 Response to “Download di file senza svelarne il percorso”


  1. 1 Flaz

    Qualora dovesse essere scaricato un file, ad esempio un’immagine, richiedendo la finestra di download anziché visualizzarla direttamente nel browser bisogna usare attachment anziché inline nel Content-disposition.

  1. 1 Tenere traccia dei download con la mail - php in pillole

Leave a Reply