From b5567e738aa372e0f3408c40e96bd4bd445bf3a1 Mon Sep 17 00:00:00 2001 From: Alexandre Daubois Date: Mon, 16 Dec 2024 17:04:34 +0100 Subject: [PATCH] [HttpFoundation] Avoid mime type guess with temp files in `BinaryFileResponse` --- BinaryFileResponse.php | 7 ++++++- Tests/BinaryFileResponseTest.php | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/BinaryFileResponse.php b/BinaryFileResponse.php index a2b160f8a..0f5b3fca5 100644 --- a/BinaryFileResponse.php +++ b/BinaryFileResponse.php @@ -189,7 +189,12 @@ public function prepare(Request $request): static } if (!$this->headers->has('Content-Type')) { - $this->headers->set('Content-Type', $this->file->getMimeType() ?: 'application/octet-stream'); + $mimeType = null; + if (!$this->tempFileObject) { + $mimeType = $this->file->getMimeType(); + } + + $this->headers->set('Content-Type', $mimeType ?: 'application/octet-stream'); } parent::prepare($request); diff --git a/Tests/BinaryFileResponseTest.php b/Tests/BinaryFileResponseTest.php index 77bc32e8c..d4d84b305 100644 --- a/Tests/BinaryFileResponseTest.php +++ b/Tests/BinaryFileResponseTest.php @@ -458,4 +458,15 @@ public function testCreateFromTemporaryFile() $string = ob_get_clean(); $this->assertSame('foo,bar', $string); } + + public function testCreateFromTemporaryFileWithoutMimeType() + { + $file = new \SplTempFileObject(); + $file->fwrite('foo,bar'); + + $response = new BinaryFileResponse($file); + $response->prepare(new Request()); + + $this->assertSame('application/octet-stream', $response->headers->get('Content-Type')); + } }