我正在尝试显示本地存储的图像。那些上传的文件位于“存储”文件夹中
我正在使用以下代码来显示图像
@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.
但是它仍然不起作用
答案 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}") }}