如何使用Laravel 5.8显示图像?

How to display image using Laravel 5.8?

我正在尝试显示存储在本地的图像。上传的那些文件在存储文件夹

我正在使用以下代码显示图像

@foreach($publications as $p)
    <div class="card" style="width: 18rem;">
        <img class="card-img-top" src="{{URL('public/storage/app/{$p->file_name}')}}" alt="{{$p->file_name}}" />
      <div class="card-body">
        <p class="card-text">{{$p->description}}</p>
      </div>
    </div>
@endforeach

但是我得到了:

怎么了?

编辑 1

我用php artisan storage:link,控制台显示

The [public/storage] directory has been linked.

但还是不行

首先你需要做

php artisan storage:link

这样您的 wepapp 无法访问的存储文件夹通常会链接到您的 public 文件夹,以便您的应用程序可以访问图片,就像它们在 public 文件夹中一样 但它会将它们存储在存储文件夹中,然后你应该像这样放置 smthg 以显示图像

我觉得会是这样

    <img src="/storage/2/{{$p->file_name}}"/>

如果此路径不起作用,您可以将路径编辑为应用程序中的路径

希望对你有用

编辑我将与您分享我的代码中的示例 在迁移中,用户迁移

$table->string('image');

控制器

$imageName = time().'.'.request()->image->getClientOriginalExtension();
        request()->image->move(public_path('userpicture'), $imageName);
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'image' => $imageName,
            'password' => Hash::make($data['password']),
        ]);

请注意,我在这里使用的创建方法仅在您将那些可填充的字段放入用户模型时才有效,所以不要介意您可以在存储数据部分使用任何您想要的东西,但专注于这三行

$imageName = time().'.'.request()->image->getClientOriginalExtension();
            request()->image->move(public_path('userpicture'), $imageName);

                'image' => $imageName,

如您所见,移动功能将图片移动到 public 文件夹并将其放入 userpicture 文件夹,然后最后一行将图像名称存储在数据库中,以便我以后可以访问它显示图片

然后我可以简单地这样做来显示图片

<img class="img-responsive img-rounded" src="{{ asset('userpicture/1561335133.jpg') }}" alt="User picture">

php artisan storage:link 创建指向 /storage/app/public

的符号链接

但看起来您的文件在 /storage/app/files 中,请尝试将文件移动到 public 文件夹。

您可以使用资产助手来显示文件{{ asset("storage/{$p->file_name}") }}