Download Laravel App
https://laravel.com/docs/11.x/installation
composer global require laravel/installer
C:\xampp\htdocs\laravel11\myapp>composer global require laravel/installer
run this migration
C:\xampp\htdocs\laravel\laravel11\myapp>php artisan migrate
Create Controller
php artisan make:controller UploadController
C:\xampp\htdocs\laravel\laravel10project>php artisan make:controller UploadController
app\Http\Controllers\UploadController.php
//
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UploadController extends Controller
{
public function index()
{
return view('fileupload');
}
public function store(Request $request)
{
$request->validate([
'file' => 'required|mimes:doc,docx,pdf,txt,json,xls,jpg,png|max:2048',
]);
$path = $request->file('file')->store('public/files');
return redirect('file-upload')->with('status', 'File Has been uploaded successfully ' . $path . ' ');
}
}
File Storage https://laravel.com/docs/11.x/filesystem
php artisan storage:link
Bootstrap 5 CDN
https://getbootstrap.com/docs/5.0/getting-started/download/
Create the blade views
resources/views/fileupload.blade.php
//resources/views/fileupload.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Laravel 11 File Upload with Validation </title>
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body>
<div class="container mt-4 ">
<h2 class="text-center">Laravel 11 File Upload with Validation </h2>
<form method="POST" enctype="multipart/form-data" id="upload" action="{{ url('upload') }}">
@csrf
<div class="row">
<div class="col-md-6 offset-md-3">
<div class="form-group">
<input type="file" name="file" placeholder="Choose file" id="file">
@error('file')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<div class="col-md-6 offset-md-3">
<button type="submit" class="btn btn-primary" id="submit">Submit</button>
</div>
<br>
<div class="col-md-6 offset-md-3">
@if(session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
</div>
</div>
</form>
</div>
</div>
</body>
</html>
Routes routes/web.php
//routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UploadController;
Route::get('/', function () {
return view('welcome');
});
Route::get('file-upload', [UploadController::class, 'index']);
Route::post('upload', [UploadController::class, 'store']);
Github - Laravel 11 File Upload with Validation
