链接到CakePHP视图中的文件(如PDF)

链接到CakePHP视图中的文件(如PDF),cakephp,Cakephp,我想在我的控制器视图中链接到一些PDF。实现这一目标的最佳实践是什么?CakePHP webroot文件夹包含一个./files/子文件夹,我很困惑,因为我尝试链接到它时没有在我的href中使用“魔法”路径名(例如“/path/to/my/webroot/files/myfile.pdf”) 我有什么选择 编辑:我没有充分描述我的问题。我试图以一种平台无关的方式(即nomod_rewrite)链接到/app/webroot/files/中的文件 此后,我一直通过将此类文件存储在CakePHP目录

我想在我的控制器视图中链接到一些PDF。实现这一目标的最佳实践是什么?CakePHP webroot文件夹包含一个./files/子文件夹,我很困惑,因为我尝试链接到它时没有在我的href中使用“魔法”路径名(例如“/path/to/my/webroot/files/myfile.pdf”)

我有什么选择

编辑:我没有充分描述我的问题。我试图以一种平台无关的方式(即no
mod_rewrite
)链接到/app/webroot/files/中的文件


此后,我一直通过将此类文件存储在CakePHP目录结构之外来解决这个问题。

我不确定自己是否正确理解了这个问题,但接下来是。基本上,您放在webroot文件夹中的任何文件都可以在Web服务器上访问,因此,如果您将该文件放在webroot/files/file.pdf中,您只需链接到/files/file.pdf即可

如果这不起作用,请澄清您的问题……

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



:)

我可以确认,当未使用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'); ?>

这有点相切,但要在模型和其他地方访问这样的位置,您只需执行以下操作:

$file = WWW_ROOT . DS . 'files' . DS;
这种策略可能有助于访问文件以进行静态数据加载,如XML或JSON

这不建议用于公共消费或公共链接。


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

严格来说,这是我问题的正确答案。然而,我没有很好地沟通,我正在努力跨多个平台链接到/app/webroot/files目录中的文件;具体来说,在mod_rewrite不可用的地方…我使用它作为echo$this->Html->link(substr($result['S']['result'],0,20),$result['S']['filepath']);但它会给出..我希望我能确保它拼写正确(路径和文件名),否则它会抛出丢失的控制器错误。有一段时间让我头疼……它很管用,但在CakePHP的较新版本上,应该使用
$html->webroot
而不是
$this->webroot
。注意:欢迎使用堆栈溢出!感谢您提供这段代码片段,它可能会提供一些有限的、即时的帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。
$file = WWW_ROOT . DS . 'files' . DS;
       <a href="<?php echo $this->request->webroot . 'carpetadentrodelwebroot/archivo.pdf'; ?>" target="pdf-frame" download="nombreParaDescarga">Descargar Archivo</a>