Quella che presentiamo in questo breve articolo è una funzioncina che può tornare utile se si vuole simulare tramite le proprie pagine web lo scaricamento di un file sul modello di un allegato di posta elettronica. La funzione accetta due parametri: il percorso in cui si trova il file da scaricare (la sua path) e il nome con il quale verrà salvato nel nostro disco rigido o in altra destinazione
Nella funzione vengono definite innanzitutto le intestazioni della pagina (gli headers) dove si ricavano il nome del file da scaricare e la sua dimensione, in secondo luogo viene utilizzata la funzione nativa readfile() per leggere il contenuto del percorso indicato come parametro.
Ecco il codice della nostra funzione:
<?php
function allegato($percorso,$nome_file)
{
@header('Pragma: private');
@header('Cache-control: private, must-revalidate');
@header("Content-Type: application/octet-stream");
@header("Content-Length: " .(string)(@filesize($percorso)) );
@header('Content-Disposition: attachment; filename="'.($nome_file).'"');
@readfile($percorso);
@exit;
}
?>
Utilizzarla è molto demplice, basta richiamare il file che la contiene da qualsiasi posizione della web root e indicare i parametri richiesti.
<?php
@require 'funzione.php';
@allegato('/directory/file.txt','allegato.txt');
?>
Sarà sufficiente aprire la pagina da browser o cliccare su un link che punta ad essa per dare il via allo scaricamento dell'allegato.
|