Issue #1229014 by bfroehle, jackbravo: Content-Disposition header makes private files show open/save prompts, but public files show inline.
parent
3241695dfa
commit
5fbc23088c
|
@ -561,20 +561,10 @@ function file_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAM
|
||||||
function file_get_content_headers(File $file) {
|
function file_get_content_headers(File $file) {
|
||||||
$name = mime_header_encode($file->filename);
|
$name = mime_header_encode($file->filename);
|
||||||
$type = mime_header_encode($file->filemime);
|
$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(
|
return array(
|
||||||
'Content-Type' => $type,
|
'Content-Type' => $type,
|
||||||
'Content-Length' => $file->filesize,
|
'Content-Length' => $file->filesize,
|
||||||
'Content-Disposition' => $disposition . '; filename="' . $name . '"',
|
|
||||||
'Cache-Control' => 'private',
|
'Cache-Control' => 'private',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,6 @@ class ImageFieldDisplayTest extends ImageFieldTestBase {
|
||||||
// Only verify HTTP headers when using private scheme and the headers are
|
// Only verify HTTP headers when using private scheme and the headers are
|
||||||
// sent by Drupal.
|
// sent by Drupal.
|
||||||
$this->assertEqual($this->drupalGetHeader('Content-Type'), 'image/png', 'Content-Type header was sent.');
|
$this->assertEqual($this->drupalGetHeader('Content-Type'), 'image/png', 'Content-Type header was sent.');
|
||||||
$this->assertEqual($this->drupalGetHeader('Content-Disposition'), 'inline; filename="' . $test_image->filename . '"', 'Content-Disposition header was sent.');
|
|
||||||
$this->assertTrue(strstr($this->drupalGetHeader('Cache-Control'),'private') !== FALSE, 'Cache-Control header was sent.');
|
$this->assertTrue(strstr($this->drupalGetHeader('Cache-Control'),'private') !== FALSE, 'Cache-Control header was sent.');
|
||||||
|
|
||||||
// Log out and try to access the file.
|
// Log out and try to access the file.
|
||||||
|
|
|
@ -149,7 +149,6 @@ class PictureFieldDisplayTest extends ImageFieldTestBase {
|
||||||
// Only verify HTTP headers when using private scheme and the headers are
|
// Only verify HTTP headers when using private scheme and the headers are
|
||||||
// sent by Drupal.
|
// sent by Drupal.
|
||||||
$this->assertEqual($this->drupalGetHeader('Content-Type'), 'image/png', 'Content-Type header was sent.');
|
$this->assertEqual($this->drupalGetHeader('Content-Type'), 'image/png', 'Content-Type header was sent.');
|
||||||
$this->assertEqual($this->drupalGetHeader('Content-Disposition'), 'inline; filename="' . $test_image->filename . '"', 'Content-Disposition header was sent.');
|
|
||||||
$this->assertTrue(strstr($this->drupalGetHeader('Cache-Control'), 'private') !== FALSE, 'Cache-Control header was sent.');
|
$this->assertTrue(strstr($this->drupalGetHeader('Cache-Control'), 'private') !== FALSE, 'Cache-Control header was sent.');
|
||||||
|
|
||||||
// Log out and try to access the file.
|
// Log out and try to access the file.
|
||||||
|
|
Loading…
Reference in New Issue