function file_transfer

Transfers a file to the client using HTTP.

Pipes a file through Drupal to the client.

Parameters

$uri: String specifying the file URI to transfer.

$headers: An array of HTTP headers to send along with file.

Related topics

2 calls to file_transfer()
file_download in includes/file.inc
Menu handler for private file transfers.
image_style_deliver in modules/image/image.module
Page callback: Generates a derivative, given a style and image path.

File

includes/file.inc, line 2043

Code

function file_transfer($uri, $headers) {
    if (ob_get_level()) {
        ob_end_clean();
    }
    foreach ($headers as $name => $value) {
        drupal_add_http_header($name, $value);
    }
    drupal_send_headers();
    $scheme = file_uri_scheme($uri);
    // Transfer file in 1024 byte chunks to save memory usage.
    if ($scheme && file_stream_wrapper_valid_scheme($scheme) && ($fd = fopen($uri, 'rb'))) {
        while (!feof($fd)) {
            print fread($fd, 1024);
        }
        fclose($fd);
    }
    else {
        drupal_not_found();
    }
    drupal_exit();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.