Ajax Image Upload Example with Validation in PHP Laravel Framework

Ajax Image Upload Example with Validation in PHP Laravel Framework

In this post we will give you information about Ajax Image Upload Example with Validation in PHP Laravel Framework. Hear we will give you detail about Ajax Image Upload Example with Validation in PHP Laravel FrameworkAnd how to use it also give you demo for it if it is necessary.

Today, I am going to show you How to image or file upload using jquery Ajax in our Laravel application. In this tutorial i explain step by step example code of ajax image upload using jquery form JS.

As you know today, we have basic feature image or file uploading(Laravel 5.3 Image Upload with Validation example) on our PHP Project Or Laravel application. Client always want to store image for profile, products, items, users etc. Laravel provide very simple way to store that image in our server, Laravel also provide validation for max file size, image, mime type(Laravel 5.3 – Form Input Validation rules example with demo) etc. So, If we make image upload using jquery ajax then it become good for our GUI and best. So Today in this post we will learn how to upload image using jquery ajax. In this example i use FormJS for fire Ajax that way we can simply use laravel validation and also print laravel error message.

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 step as listed bellow.

Follow Bellow Few Step:

1)Install Laravel Application

2)Database Configuration

3)Create ajax_images Table and Model

4)Create Route

5)Create Controller

6)Create View

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.

Preview:

Step 1 : Install Laravel 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


Also see:Laravel – Image Upload and Resize Example using Intervention Image Package

Step 3: Create ajax_images Table and Model

In this step we have to create migration for ajax_images table using Laravel 5.3 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 IlluminateSupportFacadesSchema;

use IlluminateDatabaseSchemaBlueprint;

use IlluminateDatabaseMigrationsMigration;




class CreateAjaxImageTabel extends Migration

{

    /**

     * Run the migrations.

     *

     * @return void

     */

    public function up()

    {

        Schema::create('ajax_images', function (Blueprint $table) {

            $table->increments('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/AjaxImage.php and put bellow content in item.php file:

app/AjaxImage.php

<?php




namespace App;




use IlluminateDatabaseEloquentModel;




class AjaxImage extends Model

{

    /**

     * The attributes that are mass assignable.

     *

     * @var array

     */

    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

Route::get('ajaxImageUpload', ['uses'=>'AjaxImageUploadController@ajaxImageUpload']);

Route::post('ajaxImageUpload', ['as'=>'ajaxImageUpload','uses'=>'AjaxImageUploadController@ajaxImageUploadPost']);


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 AppHttpControllers;




use IlluminateHttpRequest;

use Validator;

use AppAjaxImage;




class AjaxImageUploadController extends Controller

{

	/**

     * Show the application ajaxImageUpload.

     *

     * @return IlluminateHttpResponse

     */

    public function ajaxImageUpload()

    {

    	return view('ajaxImageUpload');

    }




    /**

     * Show the application ajaxImageUploadPost.

     *

     * @return IlluminateHttpResponse

     */

    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->getClientOriginalExtension();

        $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 5 - 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 >

  <h1>Laravel 5 - Ajax Image Uploading Tutorial</h1>




  <form action="{{ route('ajaxImageUpload') }}" enctype="multipart/form-data" method="POST">




  	<div  style="display:none">

        <ul></ul>

    </div>




    <input type="hidden" name="_token" value="{{ csrf_token() }}">




    <div >

      <label>Alt Title:</label>

      <input type="text" name="title"  placeholder="Add Title">

    </div>




	<div >

      <label>Image:</label>

      <input type="file" name="image" >

    </div>




    <div >

      <button  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>


Now we are ready to run our example so run bellow command ro quick run:

php artisan serve


Now you can open bellow URL on your browser:

Also see:Laravel 5.3 – image dimension validation rules example
http://localhost:8000/ajaxImageUpload


I hope it can help you…

Video

Hope this code and post will helped you for implement Ajax Image Upload Example with Validation in PHP Laravel Framework. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs

For More Info See :: laravel And github

Leave a Comment

Your email address will not be published. Required fields are marked *

16  +    =  24

We're accepting well-written guest posts and this is a great opportunity to collaborate : Contact US