题
我想在我的某个控制器视图中链接到某些PDF。完成此任务的最佳做法是什么? CakePHP webroot文件夹包含一个./files/子文件夹,我试图链接到它而不使用“魔术”而感到困惑。我的href中的路径名(例如“/path/to/my/webroot/files/myfile.pdf")。
我有什么选择?
编辑:我没有充分描述我的问题。我试图以平台无关(即没有 mod_rewrite
)的方式链接到/ app / webroot / files /中的文件。
我之前通过将这些文件存储在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文件夹中放置的任何文件都可以在Web服务器上访问,因此如果您将文件放在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>
不隶属于 StackOverflow