Browse Source

Change Content-Disposition Header

- Make ALLOWED_CONTENT_TYPES public in order to use
- Add $fileName variable which uses "$node->getName()" to get the proper file name and "$file->getMimeType()" along with the ALLOWED_CONTENT_TYPES array in PhotoCache.php to get the proper file extension
- Make "$fileName" the name of the file in the Content-Disposition header when downloading a Contact's photo
- Add filename to the CardDAV integration image export test header
- Change headers in ImageExportPluginTest to reflect changes

Signed-off-by: Jacob Neplokh <me@jacobneplokh.com>
tags/v20.0.0beta4
Jacob Neplokh 3 years ago
parent
commit
e8a4feb1c6
No account linked to committer's email address

+ 2
- 1
apps/dav/lib/CardDAV/ImageExportPlugin.php View File

@@ -103,7 +103,8 @@ class ImageExportPlugin extends ServerPlugin {
try {
$file = $this->cache->get($addressbook->getResourceId(), $node->getName(), $size, $node);
$response->setHeader('Content-Type', $file->getMimeType());
$response->setHeader('Content-Disposition', 'attachment');
$fileName = $node->getName() . '.' . PhotoCache::ALLOWED_CONTENT_TYPES[$file->getMimeType()];
$response->setHeader('Content-Disposition', "attachment; filename=$fileName");
$response->setStatus(200);

$response->setBody($file->getContent());

+ 1
- 1
apps/dav/lib/CardDAV/PhotoCache.php View File

@@ -43,7 +43,7 @@ use Sabre\VObject\Reader;
class PhotoCache {

/** @var array */
protected const ALLOWED_CONTENT_TYPES = [
public const ALLOWED_CONTENT_TYPES = [
'image/png' => 'png',
'image/jpeg' => 'jpg',
'image/gif' => 'gif',

+ 3
- 3
apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php View File

@@ -166,7 +166,7 @@ class ImageExportPluginTest extends TestCase {
if ($photo) {
$file = $this->createMock(ISimpleFile::class);
$file->method('getMimeType')
->willReturn('imgtype');
->willReturn('image/jpeg');
$file->method('getContent')
->willReturn('imgdata');

@@ -176,10 +176,10 @@ class ImageExportPluginTest extends TestCase {

$this->response->expects($this->at(3))
->method('setHeader')
->with('Content-Type', 'imgtype');
->with('Content-Type', 'image/jpeg');
$this->response->expects($this->at(4))
->method('setHeader')
->with('Content-Disposition', 'attachment');
->with('Content-Disposition', 'attachment; filename=card.jpg');

$this->response->expects($this->once())
->method('setStatus')

+ 1
- 1
build/integration/features/carddav.feature View File

@@ -55,7 +55,7 @@ Feature: carddav
Given "admin" uploads the contact "bjoern.vcf" to the addressbook "MyAddressbook"
When Exporting the picture of contact "bjoern.vcf" from addressbook "MyAddressbook" as user "admin"
Then The following HTTP headers should be set
|Content-Disposition|attachment|
|Content-Disposition|attachment; filename=bjoern.vcf.jpg|
|Content-Type|image/jpeg|
|Content-Security-Policy|default-src 'none';|
|X-Content-Type-Options |nosniff|

Loading…
Cancel
Save