====== Scaricare un file con PHP ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//24/01/2012//** \\ \\
Di seguito una semplice funzione php per scaricare file dal web. \\
**Esempio di utilizzo**
dl("http://www.freemedialab.org/help/pobvnc-i386-linux.tar.gz" ,"/files/");
Si puo anche omettere il secondo parametro con la cartella di destinazione se si vuole che il download avvenga nella stessa cartella dello script. \\
**la cartella destinazione deve avere i permessi 777 **
===== Codice =====
function dl($url, $dest=NULL)
{
//Inizializzo cUrl
$ch = curl_init();
//Setto la url
curl_setopt($ch, CURLOPT_URL, $url);
//Apro in locale un file e passo a cUrl il puntatore
if ($dest!=NULL) $dest=$dest."/";
$fp = fopen($dest.basename($url), 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
//Eseguo il download e chiudo la sessione cUrl
curl_exec ($ch);
curl_close ($ch);
//Chiudo e scrivo il il file
fclose($fp);
}
===== Avanzamento del download =====
Possiamo anche ,tramite una callback, raccogliere lo stato dell'avanzamento del download in questo modo:
function progress($download_size, $downloaded, $upload_size, $uploaded)
{
if ($downloaded>0)
{
$percent= round($downloaded*100/$download_size);
}else { $percent=0; }
//La percentuale di avanzamento viene scritta sul file "progress.txt", basta così leggerla
file_put_contents("progress.txt", $percent);
}
function dl($url, $dest=NULL)
{
//Inizializzo cUrl
$ch = curl_init();
//Setto la url
curl_setopt($ch, CURLOPT_URL, $url);
//Apro in locale un file e passo a cUrl il puntatore
if ($dest!=NULL) $dest=$dest."/";
$fp = fopen($dest.basename($url), 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
//Per mostrare l'avanzamento grazie alla funzione "progress"
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progress');
curl_setopt($ch, CURLOPT_BUFFERSIZE, 128);
//Eseguo il download e chiudo la sessione cUrl
curl_exec ($ch);
curl_close ($ch);
//Chiudo e scrivo il il file
fclose($fp);
}