Ajax File Upload with Form Data PHP

Ajax File Upload with Form Data PHP

 1. index.html – Frontend HTML with Ajax

<!DOCTYPE html> <html lang="en"> <head> <title>Ajax File Upload</title> <meta charset="utf-8"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> $(document).ready(function(){ $("#fupForm").on('submit', function(e){ e.preventDefault(); $.ajax({ type: 'POST', url: 'submit.php', data: new FormData(this), contentType: false, cache: false, processData: false, beforeSend: function(){ $('.submitBtn').attr("disabled", "disabled"); $('#fupForm').css("opacity", ".5"); }, success: function(msg){ $('.statusMsg').html(''); if(msg === 'ok'){ $('#fupForm')[0].reset(); $('.statusMsg').html('<span class="text-success">Form data submitted successfully.</span>'); } else { $('.statusMsg').html('<span class="text-danger">Some problem occurred, please try again.</span>'); } $('#fupForm').css("opacity", ""); $(".submitBtn").removeAttr("disabled"); } }); }); // Validate file type $("#file").change(function(){ var file = this.files[0]; var imagefile = file.type; var allowedTypes = ["image/jpeg", "image/png", "image/jpg"]; if (!allowedTypes.includes(imagefile)) { alert('Please select a valid image file (JPEG/JPG/PNG).'); $("#file").val(''); return false; } }); }); </script> </head> <body> <div class="container mt-3"> <h2>Ajax File Upload with Form Data</h2> <p class="statusMsg"></p> <form enctype="multipart/form-data" id="fupForm"> <div class="form-group mb-3"> <label for="name">NAME</label> <input type="text" class="form-control" name="name" id="name" placeholder="Enter name" required> </div> <div class="form-group mb-3"> <label for="email">EMAIL</label> <input type="email" class="form-control" name="email" id="email" placeholder="Enter email" required> </div> <div class="form-group mb-3"> <label for="file">File</label> <input type="file" class="form-control" name="file" id="file" required> </div> <input type="submit" name="submit" class="btn btn-danger submitBtn" value="SAVE"> </form> </div> </body> </html>

2. Create MySQL Table

Run the following SQL command to create your table:

CREATE TABLE IF NOT EXISTS `form_data` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `file_name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

3. dbConfig.php – Database Configuration

<?php // DB details $dbHost = 'localhost'; $dbUsername = 'root'; $dbPassword = 'root'; $dbName = 'semicolan'; // Create connection $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); // Check connection if ($db->connect_error) { die("Connection failed: " . $db->connect_error); } ?>

4. Create an uploads/ Folder

Make sure to create a directory named uploads in your project folder where the uploaded files will be stored:

mkdir uploads chmod 755 uploads

5. submit.php – Handle File Upload and Save to DB

<?php if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_FILES['file']['name'])){ $uploadedFile = ''; if(!empty($_FILES["file"]["type"])){ $fileName = time() . '_' . $_FILES['file']['name']; $valid_extensions = array("jpeg", "jpg", "png"); $temporary = explode(".", $_FILES["file"]["name"]); $file_extension = end($temporary); if((in_array($_FILES["file"]["type"], ["image/png", "image/jpg", "image/jpeg"])) && in_array($file_extension, $valid_extensions)){ $sourcePath = $_FILES['file']['tmp_name']; $targetPath = "uploads/" . $fileName; if(move_uploaded_file($sourcePath, $targetPath)){ $uploadedFile = $fileName; } } } $name = $_POST['name']; $email = $_POST['email']; // Include database configuration file include_once 'dbConfig.php'; // Insert form data into the database $insert = $db->query("INSERT INTO form_data (name, email, file_name) VALUES ('$name', '$email', '$uploadedFile')"); echo $insert ? 'ok' : 'err'; } ?>

Final Notes

  • Ensure your server allows file uploads and your PHP upload_max_filesize setting is sufficient.

  • Always validate and sanitize inputs in a production environment.

  • For better security, consider restricting file size and scanning uploads. 

Soeng Souy

Soeng Souy

Website that learns and reads, PHP, Framework Laravel, How to and download Admin template sample source code free.

2 Comments

CAN FEEDBACK
  1. Anonymous
    Anonymous
    ចុះបើចង់ update file ហ្នឹងវិញ admin ត្រូវបន្ថែមអ្វីទៀត

    • Souy Soeng
      Souy Soeng
      Just remove old file and move new file
close