How to Upload Multiple Images with jQuery AJAX and PHP, with preview

Nakul Kumar · · 5536 Views

Uploading an image without page refresh is more user-friendly than refreshing the entire page. So, in this guide, you will learn how to upload multiple images using ajax in jQuery and PHP. You will also learn how to show the preview of multiple images before uploading them to the server.

Step 1: Create Image Upload Form

Use the following snippet to create an image uploading form.

<form method='post' action='' enctype="multipart/form-data">
   <input type="file" id='files' name="files[]" multiple><br>
   <input type="button" id="submit" value='Upload'>
</form>

<!-- Preview -->
<div id='preview'></div>

In this snippet, to enable multiple file selection, we have added the multiple attribute and name as an Array type (name='files[]').

And we have also added the <div id='preview'>, here we will display image preview using jQuery before uploading to the server.

Step 2: Script for Ajax request

Next, use the below script that going to make an ajax request to the server to upload images.

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(document).ready(function(){
    $('#submit').click(function(){
       var form_data = new FormData();

       // Read selected files
       var totalfiles = document.getElementById('files').files.length;
       for (var index = 0; index < totalfiles; index++) {
          	form_data.append("files[]", document.getElementById('files').files[index]);
     		$('#preview').append("<img src='"+URL.createObjectURL(event.target.files[i])+"'>");
       }

       // AJAX request
       $.ajax({
         url: 'ajaxUpload.php', 
         type: 'post',
         data: form_data,
         dataType: 'json',
         contentType: false,
         processData: false,
         success: function (response) {
            alert("Uploaded SuccessFully");
            console.log(response);

         }
       });
    });
});
</script>

In this script, on clicking the upload button, it creates FormData() object, and reads the selected files, and then displays preview images. After that, it makes an ajax request, and we sent the selected images with that ajax.

Step 3: Uploading image in PHP

Create a new file name ajaxUpload.php record and paste the following. In this code, it is going to store the images in the /uploads directory.

<?php
// Count total files
$countfiles = count($_FILES['files']['name']);

// Upload directory
$upload_location = "uploads/";

// To store uploaded files path
$files_arr = array();

// Loop all files
for($index = 0;$index < $countfiles;$index++){

   if(isset($_FILES['files']['name'][$index]) && $_FILES['files']['name'][$index] != ''){
      // File name
      $filename = $_FILES['files']['name'][$index];

      // Get extension
      $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));

      // Valid image extension
      $valid_ext = array("png","jpeg","jpg");

      // Check extension
      if(in_array($ext, $valid_ext)){

         // File path
         $path = $upload_location.$filename;

         // Upload file
         if(move_uploaded_file($_FILES['files']['tmp_name'][$index],$path)){
            $files_arr[] = $path;
         }
      }
   }
}

echo json_encode($files_arr);
die;
0

Please login or create new account to add your comment.

0 comments
You may also like:

What Are the 5 Elements HTML Development Services Provide in 2024?

]HTML serves as the backbone of the internet, akin to the skeleton of a website. By using various elements and tags, it provides the layout and framework for pages. These elements (...)
Vikrant Singh

What are the main features of PHP application development services in 2024

The world of PHP development continues to flourish, and new technologies, trends, and advanced practices are the reason behind this development. PHP is a popular programming language (...)
Vikrant Singh

A Comprehensive Guide to #[Override] Attribute in PHP 8.3

PHP 8.3 has ushered in an array of advanced features, among which the  #[Override] attribute stands out. This attribute, while known in other languages, is a fresh addition to (...)
Harish Kumar

What is JavaScript Promise? Understanding and Implementing Promises in JS

JavaScript, the language of the web, has evolved tremendously over the years, and with it, the methods for handling asynchronous operations have improved. One such advancement (...)
Harish Kumar

JavaScript Array Destructuring: Unpacking Arrays with Ease

JavaScript array destructuring is a powerful feature introduced in ES6 (ECMAScript 2015) that simplifies the process of extracting values from arrays. It allows you to unpack an (...)
Harish Kumar

Arrow Functions: The Modern Way to Write JavaScript

JavaScript Arrow Functions, introduced in ES6 (ECMAScript 2015), have become a fundamental part of modern JavaScript development. They offer a concise and elegant way to write (...)
Harish Kumar