📜  Laravel 如何访问存储中上传的图像 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:47.867000             🧑  作者: Mango

Laravel 如何访问存储中上传的图像

在 Laravel 中,处理上传图片是很常见的任务。图片上传后,通常存储在磁盘上,但是如何访问和显示这些图片呢?本文将介绍如何在 Laravel 中访问和显示存储中上传的图像。

在 Laravel 中上传图片

在 Laravel 中上传文件,通常使用 Laravel 文件系统 来完成。你需要在配置文件 config/filesystems.php 中定义磁盘,以便可以在该磁盘上存储或读取文件。

'disks' => [

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

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

    // ...
],

通常,我们会在公共磁盘 public 中存储上传的文件,以便可以通过 URL 直接访问这些文件。在上述配置中,我们定义 public 磁盘的文件根目录为 storage/app/public。在执行上传前,我们需要先执行以下命令以创建软链接:

php artisan storage:link

在执行完毕后,你可以在 public/storage 目录下找到存储的文件。

访问上传的图片

访问存储在磁盘上的图片,首先需要获取该图片的路径。在 Laravel 中,可以使用 Storage Facade 来获取文件的路径。

$url = Storage::url('file.jpg');

上述代码将返回一个 URL,该 URL 可以直接访问存储在磁盘上的 file.jpg 文件。

如果你需要获取文件的绝对路径,则可以使用 storage_path 函数。

$path = storage_path('app/public/file.jpg');

上述代码将返回存储在 public 磁盘中的 file.jpg 文件的绝对路径。

显示上传的图片

通常,在网站或应用程序中,用户需要查看这些上传的文件,例如图片、音频或视频等。你可以使用 Laravel Blade 模板引擎 来显示图片。

<img src="{{ Storage::url('file.jpg') }}" alt="file">

上述代码使用 Storage Facade 获取图片的 URL,并将其添加到 img 标签中的 src 属性中。

在 Blade 模板中,你也可以结合 Laravel Mix 来指定文件版本号,以便在文件内容发生更改时自动更新缓存。

<img src="{{ mix('storage/images/logo.png') }}" alt="logo">

上述代码使用 mix 函数获取图片的 URL,该函数在 public 目录下生成一个版本文件,并在文件内容发送更改时自动更新缓存。

结论

在 Laravel 中访问和显示存储中上传的图片,通常需要使用到 Laravel 文件系统和 Storage Facade。通过使用这些工具,你可以轻松访问和显示文件,以及管理存储中的文件。