2008-10-24 7 views
7

Je souhaite créer un lien vers certains fichiers PDF dans l'une de mes vues de contrôleur. Quelle est la meilleure pratique pour accomplir cela? Le dossier webroot CakePHP contient un sous-dossier ./files/, je suis confondu en essayant de lier sans utiliser de noms de chemins "magiques" dans mon href (par exemple "/path/to/my/webroot/files/myfile.pdf").Liaison à un fichier (par exemple, PDF) dans une vue CakePHP

Quelles sont mes options?

EDIT: Je n'ai pas décrit adéquatement ma question. J'essayais de créer un lien vers des fichiers dans/app/webroot/files/de manière indépendante de la plate-forme (ie pas de mod_rewrite).

J'ai depuis travaillé autour de ce problème en stockant ces fichiers en dehors de la structure de répertoire CakePHP.

Répondre

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

Ceci est, strictement, la bonne réponse à ma question. Cependant, je n'ai pas bien communiqué que je luttais avec des liens vers des fichiers dans le répertoire/app/webroot/files sur plusieurs plates-formes; spécifiquement, où mod_rewrite n'est pas disponible ... –

+0

J'utilise ceci comme echo $ this-> Html-> link (substr ($ résultat ['S'] ['RESULT'], $ result [ 'S'] ['filepath']); mais il donne COMPUTER CRIMEA JOIN .. je veux que je ai comme vous avez – jack

+0

Assurez-vous qu'il est orthographié correctement (chemin et nom de fichier) ou bien il jette des erreurs de contrôleur manquant. M'a donné des maux de tête pendant un moment ... – karns

1

Je ne suis pas sûr de bien comprendre la question, mais voilà. Fondamentalement, tout fichier que vous mettez dans le dossier webroot sera accessible sur le serveur web, donc si vous mettez le fichier dans webroot/files/file.pdf, vous devrez simplement créer un lien vers /files/file.pdf.

Si cela ne fonctionne pas, s'il vous plaît préciser votre question ...

0

ou ...

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

ou ..

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

:)

4

Je peux confirmer que c'est un problème quand mod_rewri te n'est pas utilisé.

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

sorties

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

, il doit envoyer

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

note: bug déposé http: //cakephp.lighthouseapp.com/projects/42648/tickets/1289-htmlhelperlink-to-image-broken-quand-non-using-mod_rewrite # ticket-1289-3 –

2

Cela devrait fonctionner

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

Cela fonctionne, mais sur les nouvelles versions de CakePHP, '$ html-> webroot' devrait être utilisé à la place de '$ this-> webroot'. – dnet

6

Ceci est quelque peu tangentielle, mais pour l'accès à un tel emplacement dans les modèles et d'autres endroits, vous pouvez sim faire ply ceci:

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

Cette tactique pourrait être utile pour accéder aux fichiers de quelqu'un pour le chargement de données statiques, tels que XML ou JSON.

Ceci n'est pas recommandé pour la consommation publique ou les liens publics.

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

Bienvenue dans Stack Overflow! Merci pour cet extrait de code, qui pourrait fournir une aide limitée et immédiate. Une explication appropriée [améliorerait considérablement] (// meta.stackexchange.com/q/114762) sa valeur à long terme en montrant * pourquoi * ceci est une bonne solution au problème, et le rendrait plus utile aux futurs lecteurs avec d'autres questions similaires. S'il vous plaît [modifier] votre réponse pour ajouter quelques explications, y compris les hypothèses que vous avez faites. –

Questions connexes