Laravelでのファイルアップロードのハンドリング方法


<form method="POST" action="/upload" enctype="multipart/form-data">
    @csrf
    <input type="file" name="file">
    <button type="submit">アップロード</button>
</form>
  1. ルートの設定: フォームの送信先となるルートを定義します。routes/web.phpファイルで、Route::postメソッドを使用してPOSTリクエストを受け付けるルートを作成します。
Route::post('/upload', 'UploadController@upload')->name('file.upload');
  1. コントローラの作成: UploadControllerと呼ばれるコントローラを作成し、ファイルのアップロード処理を記述します。以下は、基本的なアップロード処理の例です。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UploadController extends Controller
{
    public function upload(Request $request)
    {
        if ($request->hasFile('file')) {
            $file = $request->file('file');
            $fileName = $file->getClientOriginalName();
            $file->move(public_path('uploads'), $fileName);
            // ここでファイルの保存やデータベースへの登録などの処理を行う
            return redirect()->back()->with('success', 'ファイルがアップロードされました。');
        }
        return redirect()->back()->with('error', 'ファイルが選択されていません。');
    }
}
  1. アップロードされたファイルの保存: 上記の例では、アップロードされたファイルをpublic/uploadsディレクトリに保存しています。public_path()関数を使用して、パブリックディレクトリのパスを取得し、move()メソッドを使用してファイルを保存します。また、ファイル名はgetClientOriginalName()メソッドを使用して元のファイル名を取得しています。

  2. エラーメッセージの表示: ファイルが選択されていない場合やアップロードに失敗した場合にエラーメッセージを表示するために、セッションフラッシュメッセージを使用しています。with()メソッドを使用してフラッシュメッセージを設定し、ビューで表示します。

以上が、Laravelでのファイルアップロードのハンドリング方法です。この方法を使用することで、ファイルのアップロードと保存、エラーメッセージの表示が可能になります。