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

时间:2017-05-18 10:39:01

标签: php laravel-5

一个微不足道的场景:

1)使用

将公共/存储符号链接到存储/ app / public
php artisan storage:link

2)使用

上传文件
$path = $request->file('avatar')->store('avatars');

3)根据我的理解,我应该可以访问此网址下的文件 - www.example.com/storage/avatars/avatar.jpg

然而,我在第三步中获得的路径实际上是public / avatars / avatar.jpg,所以我最终用''替换'public /'部分以获得正确的路径。

似乎我错过了一些东西,但我找不到确切的东西。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

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

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

$path = $request->file('avatar')->store(
    'avatars', 'public'
);

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

现在你可以简单地使用:

asset('storage/avatars/avatar.jpg');

它将从storage/app/public/avatars/avatar.jpg

中检索文件

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