是否可以从公共/存储'更改公用存储文件夹名称?公共/公共'?

时间:2017-03-31 09:02:13

标签: laravel

Laravel建议here创建从public/storagestorage/app/public的符号链接。我正在寻找关于将public/storage重命名为public/public是否会导致其他配置或包中的任何问题的一些输入。

我这样做是因为db中的所有文件名都与storage/app文件夹相关。我以这种方式存储它,因为我可以使用storage_path()帮助程序统一检索任何文件。例如:

  1. 受保护的文件:storage/app/internal/secret.doc => db = internal/secret.doc
  2. 中的文件名
  3. 公开档案:storage/app/public/common.doc => db = public/common.doc
  4. 中的文件名

    然后检索它们:

    // get filename 'internal/secret.doc' or 'public/common.doc'
    $filename = DB::table('files')->find(1)->value('name'); // find file where id=1 and get only the name field
    $file = storage_path('app/'.$filename);
    

    这样我就不必怀疑在检索特定文件时是否需要添加public/文件夹。另外,当我使用asset()帮助程序生成公共文件的URL时,我可以简单地说:

    $url = asset($filename)`;
    

    然而,如果我继续使用public/storage作为符号链接文件夹,那么我将不得不这样做:

    $temp_filename = str_replace('public/', '', $filename);
    $url = asset('storage/'.$temp_filename);
    

    如果您对重命名有不同的看法,请告诉我。

1 个答案:

答案 0 :(得分:1)

public/storage sym链接到storage/app/public后,您不希望asset()中的文件路径引用public。公用文件夹已经是您的Web服务器的根目录,asset()假定是公共目录库。因此,您的资产将位于asset("storage/$filename")。这实际上来自storage/app/public/$filename