Vinculación a un archivo (por ejemplo, PDF) dentro de una vista CakePHP

StackOverflow https://stackoverflow.com/questions/233643

  •  04-07-2019
  •  | 
  •  

Pregunta

Me gustaría vincular a algunos archivos PDF en una de las vistas de mi controlador. ¿Cuál es la mejor práctica para lograr esto? La carpeta webroot de CakePHP contiene una subcarpeta ./files/, estoy confundido al intentar enlazar con ella sin usar " magic " nombres de ruta en mi href (por ejemplo, " /path/to/my/webroot/files/myfile.pdf").

¿Cuáles son mis opciones?

EDITAR: no describí adecuadamente mi pregunta. Intenté enlazar a los archivos en / app / webroot / files / de una manera independiente de la plataforma (es decir, no mod_rewrite ) de forma.

Desde entonces, he solucionado este problema almacenando dichos archivos fuera de la estructura de directorios de CakePHP.

¿Fue útil?

Solución

$html->link('Pdf', '/files/myfile.pdf');

Otros consejos

Esto es algo tangencial, pero para acceder a tal ubicación en Modelos y otros lugares, simplemente puede hacer esto:

$file = WWW_ROOT . DS . 'files' . DS;

Esta táctica puede ser útil para alguien que accede a archivos para la carga de datos estáticos, como XML o JSON.

Esto no se recomienda para consumo público o enlaces públicos.

Puedo confirmar que este es un problema cuando no se usa mod_rewrite.

<?php echo $html->link('pdf', '/files/test.pdf'); ?>

salidas

<a href="/pathtoapp/index.php/files/test.pdf">pdf</a>

debería salir

<a href="/pathtoapp/app/webroot/files/test.pdf">pdf</a>

Esto debería funcionar

<?php echo $html->link('pdf', $this->webroot('files'.DS.'test.pdf'); ?>

No estoy seguro de entender la pregunta correctamente, pero aquí va. Básicamente, cualquier archivo que coloques en la carpeta webroot será accesible en el servidor web, por lo que si pones el archivo en webroot / files / file.pdf simplemente enlazarás a /files/file.pdf.

Si eso no funciona, aclare su pregunta ...

o ..

<a href="<?php echo $this->webroot; ?>files/somefile.pdf">Link Text</a>

:)

o ...

<a href="<?php echo $html->url('/files/somefile.pdf'); ?>">Link Text</a>
       <a href="<?php echo $this->request->webroot . 'carpetadentrodelwebroot/archivo.pdf'; ?>" target="pdf-frame" download="nombreParaDescarga">Descargar Archivo</a>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top