getRouteParam('id'); if (!$id) { throw new BadRequest(); } $fileData = $this->service->getFileData($id); $response = ResponseComposer::empty() ->setHeader('Content-Disposition', 'attachment; filename="' . $fileData->getName() . '"') ->setHeader('Content-Length', (string) $fileData->getSize()) ->setBody($fileData->getStream()); if ($fileData->getType()) { $response->setHeader('Content-Type', $fileData->getType()); } return $response; } }