<form method="POST" action="/upload" enctype="multipart/form-data">
@csrf
<input type="file" name="file">
<button type="submit">アップロード</button>
</form>
- ルートの設定:
フォームの送信先となるルートを定義します。
routes/web.php
ファイルで、Route::post
メソッドを使用してPOSTリクエストを受け付けるルートを作成します。
Route::post('/upload', 'UploadController@upload')->name('file.upload');
- コントローラの作成:
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', 'ファイルが選択されていません。');
}
}
-
アップロードされたファイルの保存: 上記の例では、アップロードされたファイルを
public/uploads
ディレクトリに保存しています。public_path()
関数を使用して、パブリックディレクトリのパスを取得し、move()
メソッドを使用してファイルを保存します。また、ファイル名はgetClientOriginalName()
メソッドを使用して元のファイル名を取得しています。 -
エラーメッセージの表示: ファイルが選択されていない場合やアップロードに失敗した場合にエラーメッセージを表示するために、セッションフラッシュメッセージを使用しています。
with()
メソッドを使用してフラッシュメッセージを設定し、ビューで表示します。
以上が、Laravelでのファイルアップロードのハンドリング方法です。この方法を使用することで、ファイルのアップロードと保存、エラーメッセージの表示が可能になります。