如何获取存储在storage/app/中的文件?

Hir*_*oki 6 php laravel laravel-5

storage/app/我一直在尝试按照doc将文件存储到(并从中获取)。

运行后php artisan storage:link,我可以看到有一个指向 puiblic 文件夹的链接。

如果我放置一个包含以下代码的文件...

    Storage::put('/images/blah.png', $file);
Run Code Online (Sandbox Code Playgroud)

...存储将如下所示。

我不太确定该链接是否正常工作,因为blah.png无法检索该链接。

到目前为止,我已经更改了storageby的访问级别chmod -R 755 storage/,并输入了完整的 URL(http://localhost:8000/storage/images/blah.png。这就是asset('storage/images/blah.png')返回的内容)。尽管如此,我还是收到了 404 错误(未找到)。

config/filessystems.php。默认设置为local. (IE 'default' => 'local'

你看出我做错了什么吗?

任何建议将被认真考虑。

聚苯乙烯

这就是公共磁盘的配置的样子......

'public' => [
        'driver'     => 'local',
        'root'       => storage_path('app/public'),
        'url'        => env('APP_URL') . '/storage',
        'visibility' => 'public',
],
 //env('APP_URL').'/storage' returns 'root/storage/app/public'
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 0

公共磁盘用于存储可公开访问的文件。默认情况下,公共磁盘使用本地驱动并将这些文件存储在storage/app/public 中。为了使它们可以从网络访问,您应该创建一个从 public/storage 到 storage/app/public 的符号链接。

要创建从 public/storage 到 storage/app/public 的符号链接,请转到根文件夹:

ln -s storage/app/public public/storage
Run Code Online (Sandbox Code Playgroud)

然后,您可以将文件保存到storage/app/public:

Storage::put('/public/images/blah.png', $file);
// the blah.png is located at storage/app/public/images/blah.png
// you can also get the file path by
// $image_path = storage_path() . "/app/public/images/blah.png";
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过以下方式访问图像文件:

http://{domain}/storage/images/blah.png
Run Code Online (Sandbox Code Playgroud)