【问题标题】:How to get the public path in Perl Dancer如何在 Perl Dancer 中获取公共路径
【发布时间】:2014-08-17 17:58:44
【问题描述】:

可能是一个愚蠢的问题,但我如何获得 Dancer 中 /public 文件夹的路径?

我想在 public 文件夹下存储/读取 csv 文件,但不知道 Dan​​cer 是否提供任何方便的方法来获取 public 文件夹的基本路径。

我在尝试创建文件时遇到的错误:

open(FILE, ">>", "myapp/public/file.csv") or die "$!";

是:

No such file or directory in /ur/share/perl5/Dancer/Handler.pm l. 98

我不确定为什么它会转到 Handler.pm?

【问题讨论】:

    标签: path document-root dancer


    【解决方案1】:

    我的第一个答案是,不要那样做……有两个原因:

    1. 您可能会引发安全问题。如果黑客以某种方式找到了写入您的环境文件、更改密码等的方法怎么办?
    2. 您确实希望 /public 文件是静态的,以便进行版本控制、可移植性等。

    话虽如此,如果你真的还想这样做,公共目录位于 config->{public} 中:

    print "Public dir:".config->{public}."\n";
    

    来源: http://search.cpan.org/~xsawyerx/Dancer-1.3110/lib/Dancer/Config.pm#public_%28directory%29

    【讨论】:

    • 您是说将这些文件放在公共文件夹下会引起注意吗?我不确定将这些文件(CSV 数据文件)放在哪里?将它们放在 bin 下是个好主意吗?我认为 lib 不是一个好地方,因为它有我所有的模块。还是我应该创建自己的文件夹?
    • 如果 CSV 数据文件包含您想要提供的特定内容,我只会为它们创建路由... GET '/file/somefile' 为一个特定文件,或如果有很多不同的文件然后 GET '/file/:filename' 然后获取 param('filename'),清理它以避免任何黑客尝试。是的,如果您想将非静态文件存储在某个地方,我会创建自己的单独文件夹(在 myapp 下),如果您使用版本控制,请将其设置为忽略该文件夹(以及 /logs 等)。
    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 2013-05-08
    • 2016-09-08
    • 2018-08-14
    • 2023-03-22
    • 2019-03-07
    • 1970-01-01
    • 2016-09-08
    相关资源
    最近更新 更多