使用laravel 5.3,我试图在视图中检索图像。我怎么能这样做? 文件夹结构:storage / app / avatard
以下是代码:
public function storeAvatar(Request $request, $username)
{
$user = User::where('name', $username)->first();
$avatar = $request->file('avatar')->store('avatars');
$avatar = explode('avatars/', $avatar);
$user->user_setting()->updateOrCreate(
['user_id' => $user->id],
['avatar' => $avatar[1]]
);
return back();
}
这是图像路径在数据库中的保存方式:
/users/avatar/default.png
答案 0 :(得分:6)
有些像这样你可以实现,因为存储路径直接对公众不可用。你需要在这样的路线上提供公共网址。
在视图中
<img src="{{route('avatar',$filename)}}" />
或
<img src="/avatars/{{$filename}}" />
在routes / web.php中
Route::get('/avatars/{filename}', function ($filename)
{
$path = storage_path() . '/avatars/' . $filename;
if(!File::exists($path)) abort(404);
$file = File::get($path);
$type = File::mimeType($path);
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
})->name('avatar');
答案 1 :(得分:5)
首先输入
创建存储链接php artisan storage:link
然后
<img src={{ asset('storage/folder_name/image_name') }} />
答案 2 :(得分:1)
如果您根据Laravel documentation将文件存储在storage/app/public
目录中,则可以在Unix / Linux系统上创建符号链接,以便您像在{{3}}中那样引用这些文件。 {1}}目录。
使用artisan命令创建符号链接:
public
在您的视图中,您可以使用
引用文件php artisan storage:link
答案 3 :(得分:1)
如果您使用的是Homestead,则必须从虚拟机创建符号链接;
在您的终端中:
homestead ssh
转到项目文件夹:
cd Code/YOUR_PROJECT
现在您可以执行命令:
php artisan storage:link