Ссылка на файл (например.PDF) в представлении CakePHP.
-
04-07-2019 - |
Вопрос
Я хотел бы дать ссылку на некоторые PDF-файлы в одном из представлений моего контроллера.Какова наилучшая практика для этого?Корневая папка CakePHP содержит подпапку ./files/, меня сбивает с толку попытка создать ссылку на нее без использования «магических» имен путей в моем href (например,"/путь/к/my/webroot/files/myfile.pdf").
Какие у меня есть варианты?
РЕДАКТИРОВАТЬ: Я не совсем корректно описал свой вопрос.Я пытался связать файлы в /app/webroot/files/ в независимой от платформы (т.нет mod_rewrite
) способ.
С тех пор я решил эту проблему, сохраняя такие файлы вне структуры каталогов CakePHP.
Решение
$html->link('Pdf', '/files/myfile.pdf');
Другие советы
Это несколько тангенциально, но для доступа к такой локации в Моделях и других местах вы можете просто сделать это:
$file = WWW_ROOT . DS . 'files' . DS;
Эта тактика может быть полезна для тех, кто обращается к файлам для статической загрузки данных, таким как XML или JSON.
Это не рекомендуется для публичного использования или публичных ссылок.
Я могу подтвердить, что это проблема, когда mod_rewrite не используется.
<?php echo $html->link('pdf', '/files/test.pdf'); ?>
результаты
<a href="/pathtoapp/index.php/files/test.pdf">pdf</a>
оно должно вывести
<a href="/pathtoapp/app/webroot/files/test.pdf">pdf</a>
Это должно работать
<?php echo $html->link('pdf', $this->webroot('files'.DS.'test.pdf'); ?>
Я не уверен, что правильно понял вопрос, но здесь идет речь. По сути, любой файл, который вы помещаете в папку webroot, будет доступен на веб-сервере, поэтому, если вы поместите файл в webroot / files / file.pdf, вы просто дадите ссылку на /files/file.pdf.
Если это не сработает, уточните свой вопрос ...
или..
<a href="<?php echo $this->webroot; ?>files/somefile.pdf">Link Text</a>
:)
или...
<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>