📜  存储图像未在 laravel 中显示 - PHP (1)

📅  最后修改于: 2023-12-03 15:39:03.078000             🧑  作者: Mango

存储图像未在 Laravel 中显示 - PHP

当在 Laravel 中上传图像后,图像又未显示在页面中时,可能是以下原因导致的:

  1. 图片路径有误

  2. 未设置 public 文件夹为根目录

  3. 图片没有存储到指定文件夹

可以通过以下步骤逐步排查问题:

步骤1:检查上传的路径是否正确
$path = $request->file('image')->store('images');

这段代码将上传的图片存储到项目根目录的 storage/app/images 文件夹中。如果你希望将其存储到 public/images 文件夹中以便访问,需要在上面的代码中添加 public 参数:

$path = $request->file('image')->store('public/images');

这样就能够通过 url 访问该图片。但是会出现一个问题,就是在 public 文件夹下,链接是从应用程序文件夹开始的。

即如果存储图片的 url 为

http://localhost:8000/storage/images/image.jpg

实际路径为

project_folder/storage/app/public/images/image.jpg

因此,需要将 public 目录设置为项目的根目录:

在 Laravel 5.5 之后,可以通过执行以下命令来创建链接:

php artisan storage:link

这将在 public 目录下创建一个指向 storage/app/public 文件夹的符号链接。现在可以通过以下 url 访问该图片:

http://localhost:8000/storage/images/image.jpg
步骤2:检查 public 文件夹路径是否设置正确

在 Laravel 应用程序中,配置文件 config/filesystems.php 包含了文件系统的配置选项。检查其中的 public 配置是否已设置public目录为根目录。

'public' => [
    'driver' => 'local',
    'root' => public_path(''),
    'url' => env('APP_URL').'/public',
    'visibility' => 'public',
],
步骤3:检查图片是否存储成功

如果没有将图片存储到指定的文件夹中,则无法通过 url 访问该图片。可以在控制器中调用以下代码来检查上传的文件是否存在于指定路径:

use Illuminate\Support\Facades\Storage;

if (Storage::disk('public')->exists('images/image.jpg')) {
    //图片已存在
}

如果文件存在,则需要检查是否设置了正确的文件夹路径,并且可以通过 url 访问该图片。

以上就是解决 Laravel 中存储图像未在页面中显示的常见问题的步骤。

参考链接: