2008-10-24 19 views
7

Me gustaría vincular 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 tratar de vincularlo sin utilizar nombres de ruta "mágicos" en mi href (por ejemplo, "/ruta/to/my/webroot/files/myfile.pdf").Vinculación a un archivo (por ejemplo, PDF) dentro de una vista de CakePHP

¿Cuáles son mis opciones?

EDIT: No describí adecuadamente mi pregunta. Estaba intentando vincular los archivos en/app/webroot/files/de forma independiente de la plataforma (es decir, no mod_rewrite).

Ya he solucionado este problema almacenando dichos archivos fuera de la estructura de directorios de CakePHP.

Respuesta

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

Esta es, estrictamente, la respuesta correcta a mi pregunta. Sin embargo, no me comuniqué bien que me costaba vincular los archivos del directorio/app/webroot/files en múltiples plataformas; específicamente, donde mod_rewrite no está disponible ... –

+0

estoy usando esto como echo $ this-> Html-> link (substr ($ result ['S'] ['RESULT'], 0,20), $ result [ 'S'] ['filepath']); pero da COMPUTER CRIMEA JOIN ... quiero lo que tienes – jack

+0

Asegúrate de que está deletreado correctamente (ruta y nombre de archivo) o de lo contrario arroja errores de controlador faltantes. Me dio dolores de cabeza por un tiempo ... – karns

1

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

Si eso no funciona, por favor aclarar su pregunta ...

0

o ...

<a href="<?php echo $html->url('/files/somefile.pdf'); ?>">Link Text</a> 
1

o ..

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

:)

4

Puedo confirmar que esto es un problema cuando mod_rewri te no está siendo usado.

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

salidas

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

debe salida

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

nota: error presentado http: //cakephp.lighthouseapp.com/projects/42648/tickets/1289-htmlhelperlink-to-image-broken-when-not-using-mod_rewrite # ticket-1289-3 –

2

Esto debería funcionar

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

Funciona, pero en las versiones más nuevas de CakePHP, '$ html-> webroot' debería ser utilizado en lugar de '$ this-> webroot'. – dnet

6

Esto es algo tangencial, pero para acceder a una ubicación en modelos y otros lugares donde puedes sim capas ello:

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

Esta táctica podría ser útil para acceder a los archivos de alguien para la carga de datos estáticos, como XML o JSON.

Esto no se recomienda para el consumo público o la vinculación pública.

0
 <a href="<?php echo $this->request->webroot . 'carpetadentrodelwebroot/archivo.pdf'; ?>" target="pdf-frame" download="nombreParaDescarga">Descargar Archivo</a> 
+2

¡Bienvenido a Stack Overflow! Gracias por este fragmento de código, que podría proporcionar alguna ayuda limitada e inmediata. Una explicación adecuada [mejoraría en gran medida] (// meta.stackexchange.com/q/114762) su valor a largo plazo mostrando * why * esta es una buena solución al problema, y ​​lo haría más útil para los lectores futuros con otras preguntas similares. Por favor [edite] su respuesta para agregar alguna explicación, incluidas las suposiciones que ha hecho. –

Cuestiones relacionadas