Today, We will let you know how to image upload in Laravel 10(Laravel 10 Image Upload tutorial example). In this article, we cover the image validation and upload the image of laravel. So you can easily upload images using our article.

Overview

Step 1: Install Laravel 10

Step 2: Create Routes

Step 3: Create ImageuploadController

Step 4: Create Blade File

Step 5: Run Our Laravel Application

Step 1 : Install Laravel 10

We are going to install laravel 10, so first open the command prompt or terminal and go to xampp htdocs folder directory using the command prompt. after then run the below command.

composer create-project --prefer-dist laravel/laravel laravel9_image_upload

Step 2: Create Routes

Add the following route code in the “routes/web.php” file.

<?php
use App\Http\Controllers\ImageuploadController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/ 

Route::get('image-upload',[ImageuploadController::class, 'image_upload'])->name('image.upload');
Route::post('image-upload',[ImageuploadController::class, 'upload_post_image'])->name('upload.post.image');
?>

Step 3: Create ImageuploadController

Here in this step, we will create the ImageuploadController.php file. after then we will create an image_upload and upload_post_image method for the image upload. the first method for view file and if image upload then it will use the second method.

First, we will create an “images” folder in the public directory for file upload and give permission to read and write.

Now, in this upload_post_image method, we will check the request if request image formate is not valid then return the error message. if the request is true then the image will be successfully uploaded.

<?php
   
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
  
class ImageuploadController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function image_upload()
    {
        return view('image_upload');
    }
  
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function upload_post_image(Request $request)
    {
        $request->validate([
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);
  
        $imageName = time().'.'.$request->image->extension();  
   
        $request->image->move(public_path('images'), $imageName);
   
        return back()->with('success','You have successfully upload image.');
   
    }
}
?>

Step 4: Create Blade File

Finally, We will create an image_upload.blade.php file in the “resources/views/” folder directory and paste the below code.

in this step do not forget the pass the enctype=”multipart/form-data” in the form tag.

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Laravel 10 Image Upload tutorial example - XpertPhp</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container">
		<div class="row">
			<div class="col-lg-12">
				@if ($message = Session::get('success'))
				<div class="alert alert-success alert-block">
					<button type="button" class="close" data-dismiss="alert">×</button>
						<strong>{{ $message }}</strong>
				</div>
				@endif
				@if (count($errors) > 0)
					<div class="alert alert-danger">
						<strong>Whoops!</strong> There were some problems with your input.
						<ul>
							@foreach ($errors->all() as $error)
								<li>{{ $error }}</li>
							@endforeach
						</ul>
					</div>
				@endif
			</div>
		</div>	
  
        <form action="{{ route('upload.post.image') }}" method="POST" enctype="multipart/form-data">
            @csrf
            <div class="row">  
                <div class="col-md-6">
                    <input type="file" name="image" class="form-control">
                </div>
   
                <div class="col-md-6">
                    <button type="submit" class="btn btn-success">Upload</button>
                </div>
            </div>
        </form>
	</div>
</body>
</html>

Step 5: Run Our Laravel Application
We can start the server and run this example using the below command.

php artisan serve

Now we will run our example using the below Url in the browser.

http://127.0.0.1:8000/image-upload