Laravel建议here创建从public/storage
到storage/app/public
的符号链接。我正在寻找关于将public/storage
重命名为public/public
是否会导致其他配置或包中的任何问题的一些输入。
我这样做是因为db中的所有文件名都与storage/app
文件夹相关。我以这种方式存储它,因为我可以使用storage_path()
帮助程序统一检索任何文件。例如:
storage/app/internal/secret.doc
=> db = internal/secret.doc
storage/app/public/common.doc
=> db = public/common.doc
然后检索它们:
// 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);
如果您对重命名有不同的看法,请告诉我。
答案 0 :(得分:1)
将public/storage
sym链接到storage/app/public
后,您不希望asset()
中的文件路径引用public
。公用文件夹已经是您的Web服务器的根目录,asset()
假定是公共目录库。因此,您的资产将位于asset("storage/$filename")
。这实际上来自storage/app/public/$filename
。