Buenos días a todo el foro
Quisiera poner un enlace para descargar un fichero (no mostrarlo), como parámetro tengo el path donde encontrarlo, por ejemplo "/uploads/usuario/fichero.pdf". Además tengo interés en que la petición se haga mediante GET y no POST.
He probado en el controler: @Route("download=file={file}", name="download") Pero, ¿y con twig? Al tratar de pasar el parámetro me da un error al parsear el path.
¿Cómo es la mejor manera de hacer esto?
Gracias de antemano
Respuestas
Hola, el secreto creo que esta en el parámetro requeriments de @Route Os dejo el código por si os puede ayudar:
/** * @Route("/download/{file}", name="downloadfile", requirements={"file"=".+"}) * * @Method({"GET"}) */ public function downloadFileAction($file){ $file = $this->container->getParameter('path_uploads').'/'.$file; if (!is_file($file)) { // Respuesta. $this->addFlash('result','No se encuentra el archivo que desea bajar'); return false; } $response = new Response(file_get_contents($file)); $response->setStatusCode(200); $response->headers->set('Content-Type', 'application/pdf'); $response->headers->set('Content-Description', 'Submissions Export'); $response->headers->set('Content-Disposition', 'attachment; filename='. basename($file)); $response->headers->set('Content-Transfer-Encoding', 'base64'); $response->headers->set('Pragma', 'no-cache'); $response->headers->set('Expires', '0'); return $response; }
@espantaperros_
25 octubre 2017, 5:57