Commit 63c15e54 authored by Dries's avatar Dries

- Patch #943112 by ksenzee: file_file_download() should delegate header checks...

- Patch #943112 by ksenzee: file_file_download() should delegate header checks to a separate function.
parent 468d201c
......@@ -2328,6 +2328,35 @@ function file_directory_temp() {
return $temporary_directory;
}
/**
* Examines a file object and returns appropriate content headers for download.
*
* @param $file
* A file object.
* @return
* An associative array of headers, as expected by file_transfer().
*/
function file_get_content_headers($file) {
$name = mime_header_encode($file->filename);
$type = mime_header_encode($file->filemime);
// Serve images, text, and flash content for display rather than download.
$inline_types = variable_get('file_inline_types', array('^text/', '^image/', 'flash$'));
$disposition = 'attachment';
foreach ($inline_types as $inline_type) {
// Exclamation marks are used as delimiters to avoid escaping slashes.
if (preg_match('!' . $inline_type . '!', $file->filemime)) {
$disposition = 'inline';
}
}
return array(
'Content-Type' => $type . '; name="' . $name . '"',
'Content-Length' => $file->filesize,
'Content-Disposition' => $disposition . '; filename="' . $name . '"',
'Cache-Control' => 'private',
);
}
/**
* @} End of "defgroup file".
*/
......@@ -216,24 +216,8 @@ function file_file_download($uri, $field_type = 'file') {
}
// Access is granted.
$name = mime_header_encode($file->filename);
$type = mime_header_encode($file->filemime);
// Serve images, text, and flash content for display rather than download.
$inline_types = variable_get('file_inline_types', array('^text/', '^image/', 'flash$'));
$disposition = 'attachment';
foreach ($inline_types as $inline_type) {
// Exclamation marks are used as delimiters to avoid escaping slashes.
if (preg_match('!' . $inline_type . '!', $file->filemime)) {
$disposition = 'inline';
}
}
return array(
'Content-Type' => $type . '; name="' . $name . '"',
'Content-Length' => $file->filesize,
'Content-Disposition' => $disposition . '; filename="' . $name . '"',
'Cache-Control' => 'private',
);
$headers = file_get_content_headers($file);
return $headers;
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment