file_transfer($source, $headers)
drupal/includes/file.inc, line 1186
Transfer file using HTTP to client. Pipes a file through Drupal to the client.
$source String specifying the file path to transfer.
$headers An array of HTTP headers to send along with file.
| Name | Description |
|---|---|
| File interface | Common file handling functions. |
function file_transfer($source, $headers) {
if (ob_get_level()) {
ob_end_clean();
}
foreach ($headers as $header) {
// To prevent HTTP header injection, we delete new lines that are
// not followed by a space or a tab.
// See http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
$header = preg_replace('/\r?\n(?!\t| )/', '', $header);
drupal_set_header($header);
}
$source = file_create_path($source);
// Transfer file in 1024 byte chunks to save memory usage.
if ($fd = fopen($source, 'rb')) {
while (!feof($fd)) {
print fread($fd, 1024);
}
fclose($fd);
}
else {
drupal_not_found();
}
exit();
}