Laravel 8 Ajax Image Upload Example
If you need to see example of laravel 8 ajax image upload. we will help you to give example of laravel 8 ajax image upload with validation tutorial. i explained simply step by step jquery ajax image upload laravel 8. you'll learn laravel 8 ajax post image upload.
Here i give you full example of ajax image uploading step by step like create laravel project, migration, model, route, blade file etc. So you have to just follow few steps.
Not issue if you don't know laravel because it is from scratch. After complete this example you will find bellow as like preview, so let's start.
Step 1 : Install Laravel 8 Application
we are going from scratch, So we require to get fresh Laravel application using bellow command, So open your terminal OR command prompt and run bellow command:
composer create-project --prefer-dist laravel/laravel blog
Step 2 : Database Configuration
In this step, we require to make database configuration, you have to add following details on your .env file.
1.Database Username
1.Database Password
1.Database Name
In .env file also available host and port details, you can configure all details as in your system, So you can put like as bellow:
.env
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Step 3: Create ajax_images Table and Model
In this step we have to create migration for ajax_images table using Laravel 8 php artisan command, so first fire bellow command:
php artisan make:migration create_ajax_image_tabel
After this command you will find one file in following path database/migrations and you have to put bellow code in your migration file for create categories table.
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateAjaxImageTabel extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('ajax_images', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('image');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop("ajax_images");
}
}
Now we require to run migration be bellow command:
php artisan migrate
After create "ajax_images" table you should create AjaxImage model for categories. So first we have to run bellow laravel artisan command for create AjaxImage model:
php artisan make:model AjaxImage
Now, you can see new file on this path app/Models/AjaxImage.php and put bellow content in item.php file:
app/Models/AjaxImage.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AjaxImage extends Model
{
use HasFactory;
protected $fillable = [
'title', 'image'
];
}
Step 4: Create Route
In this is step we need to create route for ajax image upload layout file and another one for post request. so open your routes/web.php file and add following route.
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AjaxImageUploadController;
/*
|--------------------------------------------------------------------------
| 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('ajaxImageUpload', [AjaxImageUploadController::class, 'ajaxImageUpload']);
Route::post('ajaxImageUpload', [AjaxImageUploadController::class, 'ajaxImageUploadPost'])->name('ajaxImageUpload');
Step 5: Create Controller
In this point, now we should create new controller as AjaxImageUploadController in this path app/Http/Controllers/AjaxImageUploadController.php. this controller will manage layout and image validation with post request, So run bellow command for generate new controller:
php artisan make:controller AjaxImageUploadController
Ok, now put bellow content in controller file:
app/Http/Controllers/AjaxImageUploadController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
use App\Models\AjaxImage;
class AjaxImageUploadController extends Controller
{
/**
* Show the application ajaxImageUpload.
*
* @return \Illuminate\Http\Response
*/
public function ajaxImageUpload()
{
return view('ajaxImageUpload');
}
/**
* Show the application ajaxImageUploadPost.
*
* @return \Illuminate\Http\Response
*/
public function ajaxImageUploadPost(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
if ($validator->passes()) {
$input = $request->all();
$input['image'] = time().'.'.$request->image->extension();
$request->image->move(public_path('images'), $input['image']);
AjaxImage::create($input);
return response()->json(['success'=>'done']);
}
return response()->json(['error'=>$validator->errors()->all()]);
}
}
Step 6: Create View
In Last step, let's create ajaxImageUpload.blade.php(resources/views/ajaxImageUpload.blade.php) for layout and we will write design code here and also form for ajax image upload, So put following code:
resources/views/ajaxImageUpload.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Laravel 8 - Ajax Image Uploading Tutorial</title>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
</head>
<body>
<div class="container">
<h1>Laravel 8 - Ajax Image Uploading Tutorial</h1>
<form action="{{ route('ajaxImageUpload') }}" enctype="multipart/form-data" method="POST">
<div class="alert alert-danger print-error-msg" style="display:none">
<ul></ul>
</div>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label>Alt Title:</label>
<input type="text" name="title" class="form-control" placeholder="Add Title">
</div>
<div class="form-group">
<label>Image:</label>
<input type="file" name="image" class="form-control">
</div>
<div class="form-group">
<button class="btn btn-success upload-image" type="submit">Upload Image</button>
</div>
</form>
</div>
<script type="text/javascript">
$("body").on("click",".upload-image",function(e){
$(this).parents("form").ajaxForm(options);
});
var options = {
complete: function(response)
{
if($.isEmptyObject(response.responseJSON.error)){
$("input[name='title']").val('');
alert('Image Upload Successfully.');
}else{
printErrorMsg(response.responseJSON.error);
}
}
};
function printErrorMsg (msg) {
$(".print-error-msg").find("ul").html('');
$(".print-error-msg").css('display','block');
$.each( msg, function( key, value ) {
$(".print-error-msg").find("ul").append('<li>'+value+'</li>');
});
}
</script>
</body>
</html>
Make sure you have to create "images" folder in your public directory.
Now we are ready to run our example so run bellow command so quick run:
php artisan serve
Now you can open bellow URL on your browser:
http://localhost:8000/ajaxImageUpload
I hope it can help you...
Hardik Savani
I'm a full-stack developer, entrepreneur and owner of ItSolutionstuff.com. I live in India and I love to write tutorials and tips that can help to other artisan. I am a big fan of PHP, Laravel, Angular, Vue, Node, Javascript, JQuery, Codeigniter and Bootstrap from the early stage. I believe in Hardworking and Consistency.
We are Recommending you
- Laravel 8 Inertia JS CRUD with Jetstream & Tailwind CSS
- Laravel 8 Change Date Format Examples
- Laravel 8 Send Mail using Queue Example
- Laravel 8 Yajra Datatables Example Tutorial
- Laravel 8 Livewire CRUD with Jetstream & Tailwind CSS
- Laravel 8 PDF | Laravel 8 Generate PDF File using DomPDF
- Laravel 8 Auth with Livewire Jetstream Tutorial
- Laravel 8 Authentication using Jetstream Example
- Laravel 8 Create Custom Helper Functions Tutorial
- Laravel 8 Multiple Image Upload Tutorial