Powered by WebRing.

lunedì 11 giugno 2007

Forzare download di ebook con php

Se abbiamo un sito web che supporta php possiamo ricorrere questo semplice stratagemma per forzare il download di php.
Creiamo un nuovo file intitolato "download.php".
Apriamolo con il blocco note e incolliamo il seguente testo :

<?php

$filename = $_GET['file'];

// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');

// addition by Jorg Weske
$file_extension = strtolower(substr(strrchr($filename,"."),1));

if( $filename == "" )
{
echo "ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath";
exit;
} elseif ( ! file_exists( $filename ) )
{
echo "ERROR: File not found. USE force-download.php?file=filepath";
exit;
};
switch( $file_extension )
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
?>

Addeso, caricate il file "download.php" sul vostro sito.
Per scaricare un file , basta che creiate un collegamento al file "download.php" e aggiungete "?file=url" dove url é l' indirizzo del file da scaricare.
Ecco un esempio di link corretto : http://www.sito.com/download.php?file=ebook/divina-commedia.pdf

2 commenti:

Anonimo ha detto...

alcuni siti che contengono ebooks in italiano:

http://giovannigronchi.altervista.org/ebooks/
http://antoniosegni.altervista.org/ebooks/
http://giuseppesaragat.altervista.org/ebooks/
http://mwbeijerinck.helloweb.eu/ebooks/
http://giovannileone.helloweb.eu/ebooks/
http://sandropertini.helloweb.eu/ebooks/
http://francescokossiga.helloweb.eu/ebooks/
http://oscarluigi.helloweb.eu/ebooks/

Anonimo ha detto...

Ho fatto diverse ricerche su internet , nei forum ho trovato solo aiuti difficili da capire quindi inutili.. finalmente ho scoperto questo tuo articolo e ho trovato un aiuto concreto..funziona benissimo.. grazie!