【问题标题】:Laravel : How to get a file stored in storage/app/?Laravel:如何获取存储在 storage/app/ 中的文件?
【发布时间】:2017-12-18 22:15:24
【问题描述】:

我一直在尝试将文件存储到(并从中获取)storage/app/,跟随the doc

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

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

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

...存储将如下所示。

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

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

config/filessystems.php。默认设置为local。 (即'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'

【问题讨论】:

  • storagepublic 目录之外,因此无法通过网络访问。
  • @fubar 这就是php artisan storage:link 的意义所在,它将public/storage 中的符号链接指向storage/app/public
  • @ceejayoz - 我不知道它存在。然而,不管这一点,OP 将文件存储在storage/app/images,而不是storage/app/public,因此它仍然无法从网络访问。
  • @fubar 很好。这几乎肯定是问题所在!
  • 谢谢@fubar 和@ceejayoz。 Storage::put('file name', $file) 不会在 storage/app/public 下保存文件。我觉得链接本身没有按预期工作。

标签: php laravel laravel-5


【解决方案1】:

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

要创建从 public/storage 到 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

【讨论】:

  • 感谢您的回复,但我仍然没有运气。另外,php artisan storage:link 不应该创建从storage/app/publicpublic/storage 的链接吗?
  • 您是否将storage 权限递归更改为0777?
【解决方案2】:

在控制器中

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'),
    ],

]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-07
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多