function file_transfer in Drupal 7
Same name and namespace in other branches
- 4 includes/file.inc \file_transfer()
- 5 includes/file.inc \file_transfer()
- 6 includes/file.inc \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 2031 - API for handling file uploads and server file management.
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();
}