Alcuni lezioni fa abbiamo visto come mostrare a video tutti i contenuti di una cartella. Ammettiamo di voler far scaricare ai nostri utenti tante cose. Bene ora vi mostrerò questo. Quando vogliamo fare il download dobbiamo mandare il contenuto direttamente agli Header specificando il contenuto MIME(cioè lo standar di internet,ogni file ha il suo gif,zip txt). Nell’header ci devono essere

Content-type (tipo di documento)

Content-Disposition (destinazione del contenuto)

Content-Description (descrizione del contenuto )

Content-Length (lunghezza del contenuto)

Content-type Application/octet-stream costringe il browser(dipende da quale usate io IE) ad aprire la finestra di salvataggio file. Content-Disposition sarà attachent allegato, Content-Description per esempio Download e Content-Length la lunghezza del file che stiamo per scaricare.

Ecco la pagina dove elencheremo tutti i contenuti della nostra cartella docs

<HTML>
<BODY>
<TABLE BORDER=8 WIDTH=40% ALIGN=CENTER BORDER=3>
<TR><TH>Fai clic sui link per scaricare i file</TH></TR>
<?
# elenco dei contenuti di una cartella con link
$cartella = opendir('docs');
while ($file = readdir($cartella)) {
$array_file[] = $file;
}
foreach ($array_file as $file) {
echo "<TR><TD><CENTER>";
if ( $file == ".." || $file == ".") {
continue;
}
$dimensioni_file=filesize("docs/".$file);
echo "<a href=\"
downloadit.php?nome_file=$file&dimensioni_file=$dimensioni_file
\">$file</a>,<BR>";
echo "</TR></TD></CENTER>";
}
?>
</TABLE>
</BODY>
</HTML>

Qunado clicco sul file  va alla pagina downloadit.php accodando le informazioni del file.

<?php
header("Content-type: Application/octet-stream");
header("Content-Disposition: attachment; filename=$nome_file");
header("Content-Description: Download PHP");
header("Content-Length: $dimensioni_file");
readfile($nome_file);
?>

Questa pagina non fa altro che ricevere le informazioni e scaricare il file

Esempio