Laravel:如何将文件存储在storage / app /中?

时间:2017-12-18 22:15:25

标签: php laravel laravel-5

我一直在尝试在the doc之后将文件存储到(并从storage/app/获取)。

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

如果我使用以下代码放置文件......

    Storage::put('/images/blah.png', $file);

......存储空间将如下所示。

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

到目前为止,我已将storage的访问级别更改为chmod -R 755 storage/,并输入完整的网址(http://localhost:8000/storage/images/blah.png。这是asset('storage/images/blah.png')返回的内容。不过,我收到404错误(未找到)。

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

你看到我做错了吗?

任何建议都将受到赞赏。

PS

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

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

2 个答案:

答案 0 :(得分:0)

  

公共磁盘用于公开发布的文件   无障碍。默认情况下,公共磁盘使用本地驱动程序和   将这些文件存储在storage / app / public中。使它们可以访问   在网络上,你应该创建一个从公共/存储到的符号链接   存储/应用程序/公共

要创建从公共/存储到存储/应用/公共的符号链接,请转到根文件夹:

ln -s storage/app/public public/storage

然后,您可以将文件保存到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";

然后,您可以访问图像文件:

http://{domain}/storage/images/blah.png

答案 1 :(得分:0)

在控制器中

Storage::disk('images')->get('firmas.jpg');

并在文件config / filesystems.php

'default' => env('FILESYSTEM_DRIVER', 'local'),

和磁盘

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'images' => [ // used for Backpack/CRUD (in elFinder)
        'driver' => 'local',
        'root'   => storage_path('app/pdfs'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_KEY'),
        'secret' => env('AWS_SECRET'),
        'region' => env('AWS_REGION'),
        'bucket' => env('AWS_BUCKET'),
    ],

]