首页 >后端开发 >php教程 >如何在视图中显示 Laravel 存储中的用户头像?

如何在视图中显示 Laravel 存储中的用户头像?

Patricia Arquette
Patricia Arquette原创
2024-12-25 07:26:36445浏览

How to Display User Avatars from Laravel Storage in Views?

从 Laravel 视图中的存储访问用户头像

背景:

Laravel 的存储机制允许您存储用户头像和其他文件,但这些文件通常位于 /storage 文件夹中,无法通过以下方式访问该文件夹指向 /public 文件夹的常规 HTTP 请求。

解决方案:

要在视图中显示存储中的用户头像,有两种主要方法:

1。创建符号链接

建议的方法是使用以下命令在 /public/storage 文件夹和 /storage/app/public 文件夹之间创建符号链接:

php artisan storage:link

这将创建一个快捷方式,允许您访问存储文件,就像它们位于 /public 文件夹中一样。然后,您可以按如下方式访问视图中的头像:

<img src="{{ asset('storage/avatars/' . $user->avatar) }}">

2.使用自定义路由

如果由于任何原因无法创建符号链接,您可以定义一个读取和提供图像文件的自定义路由。以下是使用闭包路由的示例:

Route::get('storage/{filename}', function ($filename) {
    $path = storage_path('public/' . $filename);

    if (!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

然后您可以使用 /storage 路由访问视图中的头像:

<img src="{{ route('storage.show', ['filename' => $user->avatar]) }}">

注意事项:

  • 与使用相比,通过路由手动提供文件可能会导致性能损失符号链接。
  • 确保保护您的自定义路由,以防止未经授权访问您的存储文件。

以上是如何在视图中显示 Laravel 存储中的用户头像?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn