在Laravel 5.4中存储和检索存储的文件

jac*_*bdo 2 php laravel-5

一个简单的场景:

1)Symlink公共/存储到存储/应用/公共使用

php artisan storage:link
Run Code Online (Sandbox Code Playgroud)

2)使用上传文件

$path = $request->file('avatar')->store('avatars');
Run Code Online (Sandbox Code Playgroud)

3)据我了解,我应该能够访问该网址下的文件-`www.example.com/storage/avatars/avatar.jpg

但是,我在第三步中获得的路径实际上是public / avatars / avatar.jpg,因此最终我将“ public /”部分替换为“以具有正确的路径。

似乎我缺少了一些东西,但是我找不到确切的东西。

谢谢您的帮助!

Rob*_*ert 5

使用公用磁盘时,应将文件存储在公用磁盘中。

您可以在存储功能的第二个参数中指定磁盘。

$path = $request->file('avatar')->store(
    'avatars', 'public'
);
Run Code Online (Sandbox Code Playgroud)

这样可以确保文件存储在公共目录中storage/app/publicstorage符号链接指向的位置storage/app/public

现在您可以简单地使用:

asset('storage/avatars/avatar.jpg');
Run Code Online (Sandbox Code Playgroud)

它将从中检索文件 storage/app/public/avatars/avatar.jpg


您可能需要检查storeAs重命名文件名或使用子目录来确保文件名是唯一的。