代码之家  ›  专栏  ›  技术社区  ›  Daniel Wright

链接到cakephp视图中的文件(例如pdf)

  •  7
  • Daniel Wright  · 技术社区  · 16 年前

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

    我有什么选择?

    编辑: 我没有充分描述我的问题。我试图链接到/app/webroot/files/中的文件,该文件位于不可知的平台(例如,否 mod_rewrite 路。

    从那时起,我就通过在cakephp目录结构之外存储这些文件来解决这个问题。

    8 回复  |  直到 7 年前
        1
  •  17
  •   Alexander Morland    16 年前
    $html->link('Pdf', '/files/myfile.pdf');
    
        2
  •  6
  •   zmonteca    14 年前

    这有点相切,但要访问模型和其他位置中的此类位置,只需执行以下操作:

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

    这种策略可能有助于访问文件以进行静态数据加载,如XML或JSON。

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

        3
  •  4
  •   James Revillini    14 年前

    我可以确认,这是一个问题,当没有使用修改重写。

    <?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>
    
        4
  •  2
  •   sotomsa    14 年前

    这应该管用

    <?php echo $html->link('pdf', $this->webroot('files'.DS.'test.pdf'); ?>
    
        5
  •  1
  •   Jonas Due Vesterheden    16 年前

    我不确定我是否正确理解了这个问题,但下面是。基本上,你放在webroot文件夹中的任何文件都可以在webserver上访问,所以如果你把文件放在webroot/files/file.pdf中,你只需链接到/files/file.pdf。

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

        6
  •  1
  •   user42801    16 年前

    或…

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

    :)

        7
  •  0
  •   Chris Hawes    16 年前

    或者…

    <a href="<?php echo $html->url('/files/somefile.pdf'); ?>">Link Text</a>
    
        8
  •  0
  •   Keila    7 年前
           <a href="<?php echo $this->request->webroot . 'carpetadentrodelwebroot/archivo.pdf'; ?>" target="pdf-frame" download="nombreParaDescarga">Descargar Archivo</a>