如何使用Laravel 5.8显示图像?

时间:2019-06-23 17:09:08

标签: php laravel image laravel-5.8

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

Storage folder

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

@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

但是我得到了

enter image description here

怎么了?

编辑1

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

The [public/storage] directory has been linked.

但是它仍然不起作用

2 个答案:

答案 0 :(得分:1)

首先,您需要做

php artisan storage:link

,以便wepapp无法访问的存储文件夹通常与您的公众链接 文件夹,以便您的应用可以访问图片,就像它们在公共文件夹中一样 但会将它们存储在存储文件夹中,然后应将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']),
        ]);

请注意,我在此处使用的create方法仅在将那些可填充项填充到用户模型中后才有效,所以没关系,您可以在存储数据部分中使用所需的任何内容,但可以在这三行中概括

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

                'image' => $imageName,

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

然后我就可以简单地显示图片

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

答案 1 :(得分:1)

php artisan storage:link创建到/storage/app/public

的符号链接

但是您的文件似乎位于/storage/app/files中,请尝试将文件移至公用文件夹。

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