Php 如何使用Laravel 5.8显示图像?

Php 如何使用Laravel 5.8显示图像?,php,laravel,image,laravel-5.8,Php,Laravel,Image,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}}" />

我正在尝试显示本地存储的图像。上载的文件位于存储文件夹中

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

@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
但是它仍然不起作用

首先你需要做的是

php artisan storage:link
因此,wepapp无法访问的存储文件夹通常与您的公用文件夹链接 文件夹,以便您的应用程序可以像访问公用文件夹中的图片一样访问这些图片 但它会将它们存储在存储文件夹中,然后您应该像这样放置smthg以显示图像

我想会是这样的

控制器

$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方法只有在将这些fildes可填充到用户模型中时才起作用,所以不要介意在存储数据部分中使用您想要的任何东西,而是集中在这三行上

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

                'image' => $imageName,
正如您所看到的,move函数将图片移动到公用文件夹,并将其放入userpicture文件夹,然后最后一行将图像名称存储在数据库中,以便稍后我可以访问它以显示图片

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

<img class="img-responsive img-rounded" src="{{ asset('userpicture/1561335133.jpg') }}" alt="User picture">
首先你需要做的是

php artisan storage:link
因此,wepapp无法访问的存储文件夹通常与您的公用文件夹链接 文件夹,以便您的应用程序可以像访问公用文件夹中的图片一样访问这些图片 但它会将它们存储在存储文件夹中,然后您应该像这样放置smthg以显示图像

我想会是这样的

控制器

$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方法只有在将这些fildes可填充到用户模型中时才起作用,所以不要介意在存储数据部分中使用您想要的任何东西,而是集中在这三行上

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

                'image' => $imageName,
正如您所看到的,move函数将图片移动到公用文件夹,并将其放入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中。请尝试将文件移动到公用文件夹

您可以使用asset helper显示文件{{assetstorage/{$p->file_name}}}

php artisan storage:link创建指向/storage/app/public的符号链接

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


您可以使用资产帮助器显示文件{{assetstorage/{$p->file_name}}}

可能您忘记了将存储/app/public文件夹链接到公用文件夹。尝试运行php artisan存储:link@LeventeOtta不工作,但控制台显示[public/storage]目录已链接。您的公用文件夹看起来如何?如果可能,请添加屏幕截图可能您忘记将存储/应用/公用文件夹链接到公用文件夹。尝试运行php artisan存储:link@LeventeOtta不工作,但控制台显示[public/storage]目录已链接。您的公用文件夹看起来如何?如果可能的话,添加一个屏幕截图如果你使用{{assetstorage/2/filename.txt}},文件应该位于/storage/app/public/2/filename.txt非工作文件{u name}}alt={{$p->file{u name}/>如果你使用{{assetstorage/2/filename.txt},文件应该位于/storage/app public/2/filename.txt非工作文件,该文件应位于/storage/app/public/2/filename.txtI没有将该文件存储在public folfer中,正如您在第一张图像中看到的那样。我应该存储在那个文件夹中吗?兄弟,拉威尔的wepapp没有访问存储等文件夹的权限,这就是为什么我们通常将存储链接到公共文件夹,因为如果你想让图片可以访问,你应该直接将它放在公共文件夹中,或者将它放在存储中,然后链接到公共文件夹,因为公共文件夹是wepapp的文件夹您可能会在代码中访问和显示其文件您错过了这一点,请始终记住css文件.js文件和图片应该公开或存储在公共vi链接中。我与您共享了我两天前编写的代码,它工作正常。我没有将文件存储在公共文件夹中,正如您在第一张图片中看到的那样。我应该存储在那个文件夹中吗?兄弟,拉威尔的wepapp没有访问存储等文件夹的权限,这就是为什么我们通常将存储链接到公共文件夹,因为如果你想让图片可以访问,你应该直接将它放在公共文件夹中,或者将它放在存储中,然后链接到公共文件夹,因为公共文件夹是wepapp的文件夹您可能会在代码中访问和显示其文件您错过了这一点,请始终记住css文件.js文件和图片应该公开或存储在公共vi的链接中。我与您共享了我两天前编写的代码,它工作正常