PEAR Manual
Prev |  | Next

# Intro

Intro -- Introduction in usage of HTTP_Download

## Introduction

HTTP_Download provides an interface to easily send any arbitrary data to HTTP clients. HTTP_Download can gain its data from variables, files or stream resources.

With this package you can easily handle (hidden) downloads. Hidden means not accessible by the public - for instance if you want to restrict access to particular downloads.

It supports HTTP compression, caching and partial downloads, resuming and sending raw data, for example from database BLOBs.

ATTENTION: You shouldn't use this package together with ob_gzhandler or zlib.output_compression enabled in your php.ini, especially if you want to send already gzipped data!

### Usage Examples:

Have a look at the following examples:

Example 42-1. Static send:
    1  $params = array(
    2   'file'                => '../hidden/download.tgz',
    3   'contenttype'         => 'application/x-gzip',
    4   'contentdisposition'  => array(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz'),
    5  );
    6
    7  $error = HTTP_Download::staticSend($params, false);

Example 42-2. Send a hidden file:
    1  $dl = &new HTTP_Download();
    2  $dl->setFile('../hidden/download.tgz');
    3  $dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz');
    4  // with ext/magic.mime
    5  // $dl->guessContentType();
    6  // else:
    7  $dl->setContentType('application/x-gzip');
    8  $dl->send();

Example 42-3. Send arbitrary data:
    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();

Example 42-4. Limiting bandwidth:
    1  $dl = &new HTTP_Download();
    2  $dl->setFile('huge_file.bin');
    3  $dl->setBufferSize(25 * 1024); // 25 K
    4  $dl->setThrottleDelay(1);   // 1 sec
    5  $dl->send();

Example 42-5. Sending a PostgreSQL LOB:
    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();

Prev | Home | Next
HTTP_Download | Up | HTTP_Download::HTTP_Download()