HTTP_Download fournit une interface pour envoyer facilement n'importe quelles données arbitraires aux clients HTTP. HTTP_Download can gain its data from variables, files or stream resources.
Avec ce paquet vous pouvez facilement manipuler des téléchargements (cachés). Caché signifiant non accessibles par le public - par exemple si vous voulez limiter l'accès à certains téléchargements.
Il supporte la compression de HTTP, la mise en cache, les téléchargements partiels, la reprise et l'envoi de données brutes, par exemple depuis des BLOBs de base de données.
ATTENTION: Vous ne devriez pas employer ce paquet en même temps que ob_gzhandler ou zlib.output_compression activé dans votre php.ini, particulièrement si vous voulez envoyer des données déjà gzippée !
Jetez un oeil aux exemples suivants:
Envoi Statique:
<?php
1 $params = array(
2 'file' => '../repertoireHorsVue/aTelecharger.tgz',
3 'contenttype' => 'application/x-gzip',
4 'contentdisposition' => array(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz'),
5 );
6
7 $error = HTTP_Download::staticSend($params, false);
?>
Envoi d'un fichier caché:
<?php
1 $dl = &new HTTP_Download();
2 $dl->setFile('../repertoireHorsVue/aTelecharger.tgz');
3 $dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz');
4 // avec ext/magic.mime
5 // $dl->guessContentType();
6 // sinon:
7 $dl->setContentType('application/x-gzip');
8 $dl->send();
?>
Envoi de données arbitraire:
<?php
1 $dl = &new HTTP_Download();
2 $dl->setData($data);
3 $dl->setLastModified($unix_timestamp);
4 $dl->setContentType('application/x-gzip');
5 $dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz');
6 $dl->send();
?>
Limitation de bande passante:
<?php
1 $dl = &new HTTP_Download();
2 $dl->setFile('gros_fichier.bin');
3 $dl->setBufferSize(25 * 1024); // 25 K
4 $dl->setThrottleDelay(1); // 1 sec
5 $dl->send();
?>
Sending a PostgreSQL LOB:
<?php
1 require_once 'HTTP/Download.php';
2 require_once 'HTTP/Download/PgLOB.php';
3 $dl = &new HTTP_Download();
4 $dl->setResource(
5 HTTP_Download_PgLOB::open(pg_connect('dbname=lobs'), 12345));
6 $dl->send();
?>