Laravel Ajax Image Upload Example

Laravel Ajax Image Upload Example

Hi Dev,

Nowadays, i'm able to give an explanation for the way to you can jquery ajax photograph add laravel.we're display laravel image upload the usage of ajax. you can clean image upload using ajax in laravel. i will inform jquery ajax picture add laravel.i'm able to display full example of laravel ajax image upload.

We will learn how to upload picture the usage of jquery ajax. In this situation i take advantage of FormJS for fireplace Ajax that manner we can definitely use laravel validation and additionally print laravel blunders message.

Here, I give you complete example of ajax photo importing grade by grade like create laravel challenge, migration, model, path, blade file and many others. so that you ought to just follow few steps.

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
Database Configuration

In this step, we require to make database configuration, you have to add following details on your .env file.

1.Database Username

2.Database Password

3.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:

following path: .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 images table using Laravel php artisan command, so first fire bellow command:

php artisan make:model Image -m

After this command you have to put bellow code in your migration file for create Image table.

following path:/database/migrations/2020_01_10_102325_create_images_table.php
<?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->bigIncrements('id');
            $table->string('title');
            $table->string('image');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('images');
    }
}

Now we require to run migration be bellow command:

php artisan migrate

After you have to put bellow code in your model file for create Image table.

following path:/app/Models/Image.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Image 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.open following fille path

following path:/routes/web.php
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ImageUploadAjaxController;

/*
|--------------------------------------------------------------------------
| 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('imageUploadAjax', 'ImageUploadAjaxController@imageUploadAjax');
Route::post('imageUploadAjax', 'ImageUploadAjaxController@imageUploadAjaxPost')->name('imageUploadsAjax');
Step 5: Create Controller

Here this step now we should create new controller as ImageUploadAjaxController,So run bellow command for generate new controller

php artisan make:controller ImageUploadAjaxController

now this step, this controller will manage layout and image validation with post request,bellow content in controller file.following fille path

following path:/app/Http/Controllers/ImageUploadAjaxController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator;
use App\Models\Image;

class ImageUploadAjaxController extends Controller
{
     /**
     * Show the application ajaxImageUpload.
     *
     * @return \Illuminate\Http\Response
     */
    public function imageUploadAjax()
    {
      return view('imageUploadAjax');
    }
    
    /**
     * Show the application ajaxImageUploadPost.
     *
     * @return \Illuminate\Http\Response
     */
    public function imageUploadAjaxPost(Request $request)
    {
      $validator = Validator::make($request->all(), [
        'title' => 'required',
        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
      ]);

      if ($validator->passes()) {

        $inputData['title'] = $request->title;
        $inputData['image'] = time().'.'.$request->image->extension();
        $request->image->move(public_path('images'), $inputData['image']);

        Image::create($inputData);
        
        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/imageUploadAjax.blade.php) for layout and we will write design code here and also form for ajax image upload, So put following code:

following path:resources/views/imageUploadAjax.blade.php
<!DOCTYPE html>
<html>
<head>
  <title>Laravel - 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>
</head>
<body>
<div class="container">
  <div class="col-md-8 col-md-offset-2">
    <h3>Laravel - Ajax Image Uploading Tutorial</h3>
    <form action="{{ route('imageUploadsAjax') }}" 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>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>
</div>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/formjs/1.1.1/formjs.min.css"></script>
<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>
Create folder images Create you have to create "images" folder in your public directory. following path:/public/images

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/imageUploadAjax

It will help you...