How to add AJAX File Uploading with Progress a Bar using JavaScript

AJAX File Upload with Progress Bar using JavaScript: A Comprehensive Guide MANOJ DAMOR || CODING FUNDA

In the dynamic world of web development, providing users with the ability to upload files seamlessly is a common requirement. Traditional file uploads involve page refreshes, interrupting the user experience. However, with the power of AJAX (Asynchronous JavaScript and XML), developers can enable file uploads without disrupting the user’s interaction with the page. In this guide, we’ll explore how to implement an AJAX-based file upload with a progress bar using JavaScript. By following these steps, you’ll learn how to create a smoother user experience by providing real-time feedback during file uploads.

Other Javascript Blog

Table of Contents

  1. Understanding AJAX File Upload and Progress Bar
  2. Preparing the HTML Markup
  3. Writing the JavaScript Code
    • Capturing the Form Submission
    • Creating a FormData Object
    • Setting Up the AJAX Request
    • Listening for Progress Events
    • Handling Response
  4. Styling the Progress Bar
  5. Server-side Handling
  6. Testing and Debugging
  7. Cross-browser Compatibility
  8. Conclusion

1. Understanding AJAX File Upload and Progress Bar

AJAX, a combination of technologies including JavaScript and XML, allows developers to send and retrieve data from a server asynchronously, without the need for page reloads. When it comes to file uploads, AJAX provides a way to achieve this while maintaining a smooth user experience. Incorporating a progress bar enhances the user’s sense of control and transparency during the upload process.

2. Preparing the HTML Markup

To begin, create an HTML form that includes an input field of type file. This input field allows users to select the file they want to upload. Additionally, set up an empty div or another suitable container to hold the progress bar.

<form id="uploadForm" enctype="multipart/form-data">
    <input type="file" id="fileInput" name="file">
    <button type="submit">Upload</button>
<div id="progressContainer">
    <progress id="progressBar" max="100" value="0"></progress>
<div id="uploadStatus"></div>

3. Writing the JavaScript Code

Step 1: Capturing the Form Submission

Start by capturing the form submission event using JavaScript. Prevent the default form submission behavior to handle the upload asynchronously.

document.getElementById("uploadForm").addEventListener("submit", function(e) {

Step 2: Creating a FormData Object

Create a FormData object to package the file data and any additional form fields. This object simplifies the process of sending data in the AJAX request.

function uploadFile() {
    var formData = new FormData();
    formData.append("file", document.getElementById("fileInput").files[0]);
    // Add more form data if needed

Step 3: Setting Up the AJAX Request

Set up an AJAX request using the XMLHttpRequest object. Configure the request method, URL, and asynchronous flag.

function uploadFile() {
// … (previous code)

var xhr = new XMLHttpRequest();"POST", "upload.php", true);


Step 4: Listening for Progress Events

Implement an event listener to track the progress of the file upload. Update the progress bar’s value based on the loaded and total properties of the event

xhr.upload.addEventListener("progress", function(e) {
    if (e.lengthComputable) {
        var percent = (e.loaded / * 100;
        document.getElementById("progressBar").value = percent;

Step 5: Handling Response

Once the upload is complete, handle the server’s response. Display a success message or any relevant information to the user.

xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        document.getElementById("uploadStatus").innerHTML = "Upload successful!";

4. Styling the Progress Bar

Enhance the visual aspect of the progress bar using CSS. Customize its appearance to match your application’s design and aesthetics.

#progressContainer {
    margin-top: 10px;

#progressBar {
    width: 100%;
    height: 20px;

5. Server-side Handling

On the server side, you need a script (e.g., upload.php) to handle the uploaded file. Process the file, perform necessary validation, and respond accordingly.

$uploadedFile = $_FILES["file"];
// Process the file and respond

6. Testing and Debugging

Thoroughly test the AJAX file upload with various file sizes and types. Monitor the browser’s developer console for JavaScript errors and ensure that the progress bar updates as expected.

7. Cross-browser Compatibility

Test your implementation across different browsers to ensure compatibility and consistent behavior.

8. Conclusion

Implementing an AJAX file upload with a progress bar using JavaScript significantly enhances the user experience. By following this comprehensive guide, you’ve learned how to create a seamless and visually appealing file upload process. The integration of AJAX and a progress bar provides users with real-time feedback, giving them a sense of control and transparency during uploads. With these skills, you can create web applications that not only function smoothly but also provide a user-friendly interface for file interactions.

Check My Social Profile Links




About The Author

AJAX File Upload with Progress Bar using JavaScript

Leave a Reply

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

Follow by Email