我已经编写了存储和显示图像的代码
show.blade.php
<form method="POST" action="{{ url('/user/'.$profile->user_id) }}" enctype="multipart/form-data">
{{ csrf_field() }}
<input type="file" name="avatar" />
<input type="submit" value="Upload" />
</form>
<img src="{{ asset($profile->avatar_path) }}" width="20px" height="20px">
ProfileController.php
public function update(Request $request, Profile $profile)
{
$this->validate($request, [
'avatar' => 'nullable|image',
]);
$profile->fill([
'avatar_path' => request()->file('avatar')->store('avatars', 'public'),
]);
$profile->save();
// auth()->user()->profile()->update([
// 'avatar_path' => request()->file('avatar')->store('avatars', 'public')
// ]);
}
它将路径存储为avatars/XCK6azMSv87qA23YYXemZlPVoSKLN3sor9aUhfhQ.jpeg
当我检查storage/app/public
图像实际存在avatars/
文件夹
在控制台中显示
GET http://localhost:8000/avatars/XCK6azMSv87qA23YYXemZlPVoSKLN3sor9aUhfhQ.jpeg 404 (Not Found)
我还执行了php artisan storage:link
命令静止图像无法加载。
答案 0 :(得分:1)
来自the docs:
默认情况下,公共磁盘使用本地驱动程序并将这些文件存储在
的符号链接storage/app/public
中。要通过网络访问它们,您应创建从public/storage
到storage/app/public
因此,运行此命令以创建符号链接:
php artisan storage:link
然后,您就可以使用asset()
帮助程序在storage/app/public/avatars/john.jpg
中显示图像:
{{ asset('storage/avatars/john.jpg') }}
答案 1 :(得分:0)
为什么不直接使用公用文件夹中资产图像文件夹的静态路径。 只需在应用程序的公共文件夹中创建一个名为Image的文件夹即可。
仅在数据库中存储图像的名称,并在Image文件夹中存储文件。
查询用户个人资料时 将图像名称存储为头像变量,并使用
在刀片文件中显示图像<img src="{{ asset(Image/$profile->avatar) }}" width="20px" height="20px">
简化。
答案 2 :(得分:-3)
我找到了解决方案,你可以在avatar_path变量之前使用/ storage /
<img src="/storage/{{ $profile->avatar_path }}" width="50px" height="50px">