forked from projects/file-explorer
30 lines
957 B
PHP
30 lines
957 B
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace App\Controller;
|
|
|
|
use App\Service\FileSystemService;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
|
|
use Symfony\Component\Routing\Attribute\Route;
|
|
|
|
class ServeFileController extends AbstractController
|
|
{
|
|
public function __construct(private FileSystemService $fileSystemService)
|
|
{
|
|
}
|
|
|
|
#[Route("/serve-file/{filePath}", name: "serve_file")]
|
|
public function __invoke(string $filePath): BinaryFileResponse
|
|
{
|
|
$file = $this->fileSystemService->getFile($filePath);
|
|
$path = $file->getPath() . '/' . $file->getName();
|
|
|
|
$response = new BinaryFileResponse($path);
|
|
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $file->getName());
|
|
|
|
return $response;
|
|
}
|
|
}
|