How to Upload Multiple Files Using jQuery, AJAX, and PHP?

Mary-Kate Olsen
Release: 2024-11-23 04:59:12
Original
338 people have browsed it

How to Upload Multiple Files Using jQuery, AJAX, and PHP?

Uploading Multiple Files with jQuery, AJAX, and PHP

Introduction

Uploading multiple files from a web form to a server is a common task in web development. In this article, we will guide you through the process of uploading multiple files using PHP, jQuery, and AJAX.

Form Design

The first step is to create a form that allows users to select and upload files. The following HTML markup represents a simple form that initially contains one file input field:

<form enctype="multipart/form-data" action="upload.php" method="post">
    <input name="file[]" type="file" />
    <button class="add_more">Add More Files</button>
    <input type="button">
Copy after login

jQuery for Adding More Files

To allow users to upload multiple files, we'll use jQuery to dynamically add additional file input fields when the "Add More Files" button is clicked:

$(document).ready(function(){
    $('.add_more').click(function(e){
        e.preventDefault();
        $(this).before("<input name='file[]' type='file' />");
    });
});
Copy after login

PHP File Handling

The form action attribute is set to "upload.php", which is the PHP script that will handle the file upload. Here's an example of the PHP code:

for($i=0; $i<count($_FILES['file']['name']); $i++){
    $target_path = "uploads/";
    $ext = explode('.', basename( $_FILES['file']['name'][$i]));
    $target_path = $target_path . md5(uniqid()) . "." . $ext[count($ext)-1]; 

    if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {
        echo "The file has been uploaded successfully <br />";
    } else{
        echo "There was an error uploading the file, please try again! <br />";
    }
}
Copy after login

AJAX for Submitting the Form

To submit the form using AJAX, we'll use jQuery's .submit() and .ajax() methods:

$('body').on('click', '#upload', function(e){
        e.preventDefault();
        var formData = new FormData($(this).parents('form')[0]);

        $.ajax({
            url: 'upload.php',
            type: 'POST',
            xhr: function() {
                var myXhr = $.ajaxSettings.xhr();
                return myXhr;
            },
            success: function (data) {
                alert("Data Uploaded: "+data);
            },
            data: formData,
            cache: false,
            contentType: false,
            processData: false
        });
        return false;
});
Copy after login

By using this code, you can dynamically create file input fields, handle file uploads on the server-side with PHP, and submit the form asynchronously using AJAX, allowing for multiple file uploads without reloading the page.

The above is the detailed content of How to Upload Multiple Files Using jQuery, AJAX, and PHP?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template