In this post you will learn how to Upload image in Laravel 8, here we will create sample project to show upload image process in Laravel 8 and show image to frontend.
Create Laravel project:
composer create-project laravel/laravel image-upload
Move to project folder:
cd image-upload
Set up database configuration:
You can use any local web server for setting up application. In this tutorial we use xamp local server.set up database configuration in .env file.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=image-upload DB_USERNAME=root DB_PASSWORD=
Create model & migration:
Run following command in command prompt to create model & migration:
Php artisan make:model image -m
After that set up function up() in database/migration/create_images_table file.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateImagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('images', function (Blueprint $table) {
$table->id();
$table->string('name')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('images');
}
}Set up fillable property true in app/model/image.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class image extends Model
{
use HasFactory;
protected $fillable=['name'];
}Now you need to run migration using following command:
php artisan migrate
You can see the list of tables in your phpmyadmin panel or database.
Create controller for image upload:
Run the following command to create a controller.
php artisan make:controller imageuploadcontroller
Set up controller in app/http/controller/imageuploadcontroller.php
<?php
namespace App\Http\Controllers;
use App\Models\image;
use Illuminate\Http\Request;
class imageuploadcontroller extends Controller
{
public function index()
{
return view('image');
}
public function imageupload(Request $request)
{
//upload the image to storage
$imageName=time().'.'.$request->image->extension();
$image=$request->image->storeAs('public/postsimages', $imageName);
//store image name
$imagedata = new image;
$imagedata->name = $imageName;
$imagedata->save();
session()->flash('success','image upload successfully');
return redirect('upload-image');
}
}
Create Route:
Open web.php file from routes directory and set following routes:
<?php
use App\Http\Controllers\imageuploadcontroller;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| 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('/', [imageuploadcontroller::class, 'index']);
Route::post('save', [imageuploadcontroller::class, 'imageupload']);Create Blade Template:
Create a blade file, named it image.blade.php into resources/views,and add the following code in to file.
<!DOCTYPE html>
<html>
<head>
<title>Uploading Image</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
@if(session()->has('success'))
<div class="alert alert-success">
{{session()->get('success')}}
</div>
@endif
<div class="card">
<div class="card-header text-center font-weight-bold">
<h2>Upload Image</h2>
</div>
<div class="card-body">
<form method="POST" enctype="multipart/form-data" id="upload-image" action="{{ url('save') }}" >
@csrf
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input type="file" name="image" placeholder="Choose image" id="image">
</div>
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-primary" id="submit">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>Run the Application:
Now, Start the application By this command.
Php artisan serve
Output:

Here you can find full code for upload image : https://github.com/gvtechnolab/laravel8-image-upload.git
If you need more guide for query you can feel free to contact us
