背景:
Laravel のストレージ メカニズムを使用すると、ユーザー アバターと他のファイルもありますが、これらのファイルは通常 /storage フォルダーにあります。 /public フォルダーを指す通常の HTTP リクエストではアクセスできません。
解決策:
ビュー内のストレージからユーザー アバターを表示するには、主に 2 つの方法があります。
1.シンボリック リンクの作成
推奨される方法は、次のコマンドを使用して /public/storage フォルダーと /storage/app/public フォルダーの間にシンボリック リンクを作成することです:
php artisan storage:link
これにより、/public フォルダーにあるかのようにストレージ ファイルにアクセスできるショートカットが作成されます。その後、次のようにビュー内のアバターにアクセスできます:
<img src="{{ asset('storage/avatars/' . $user->avatar) }}">
2.カスタム ルートの使用
何らかの理由でシンボリック リンクを作成できない場合は、イメージ ファイルを読み取って提供するカスタム ルートを定義できます。以下はクロージャ ルートを使用した例です:
Route::get('storage/{filename}', function ($filename) { $path = storage_path('public/' . $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; });
その後、/storage ルートを使用してビュー内のアバターにアクセスできます:
<img src="{{ route('storage.show', ['filename' => $user->avatar]) }}">
考慮事項:
以上がLaravelストレージからのユーザーアバターをビューに表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。