Bootstrap Modal is a popup container which use to show various types of information on the screen.
It is very flexible and user-friendly.
You can display a new entry or update form in it.
In this tutorial, I am using Bootstrap Modal for image file upload and display preview using jQuery and AJAX.
Contents
1. HTML
Create a button and Bootstrap Modal.
In the Bootstrap Modal create a file element in the <form>
and for display image preview after upload created a <div id='preview'>
.
Completed Code
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#uploadModal">Upload file</button> <!-- Modal --> <div id="uploadModal" class="modal fade" role="dialog"> <div class="modal-dialog"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">File upload form</h4> </div> <div class="modal-body"> <!-- Form --> <form method='post' action='' enctype="multipart/form-data"> Select file : <input type='file' name='file' id='file' class='form-control' ><br> <input type='button' class='btn btn-info' value='Upload' id='btn_upload'> </form> <!-- Preview--> <div id='preview'></div> </div> </div> </div> </div>
2. PHP
Create a ajaxfile.php
file and upload
folder for storing files.
Define valid image extensions in an $image_ext
Array variable.
Select file extension and check it in $image_ext
.
If a file has a valid extension then store the selected file to upload
folder and return file path.
Completed Code
<?php // file name $filename = $_FILES['file']['name']; // Location $location = 'upload/'.$filename; // file extension $file_extension = pathinfo($location, PATHINFO_EXTENSION); $file_extension = strtolower($file_extension); // Valid image extensions $image_ext = array("jpg","png","jpeg","gif"); $response = 0; if(in_array($file_extension,$image_ext)){ // Upload file if(move_uploaded_file($_FILES['file']['tmp_name'],$location)){ $response = $location; } } echo $response;
3. jQuery
On the upload button click select the browsed file and create a FormData
object for passing file data in AJAX request.
When AJAX request successfully callback then check its response.
If the response
is 0 means file is not uploaded otherwise display image preview by creating a <img>
element in the <div id='preview'>
and use response
value to set the image source.
Completed Code
$(document).ready(function(){ $('#btn_upload').click(function(){ var fd = new FormData(); var files = $('#file')[0].files[0]; fd.append('file',files); // AJAX request $.ajax({ url: 'ajaxfile.php', type: 'post', data: fd, contentType: false, processData: false, success: function(response){ if(response != 0){ // Show image preview $('#preview').append("<img src='"+response+"' width='100' height='100' style='display: inline-block;'>"); }else{ alert('file not uploaded'); } } }); }); });
4. Conclusion
Within the Bootstrap Modal create your file element in the <form>
and use jQuery AJAX for storing file to the server and display preview.