3197891abd2c7abb0c8381c7f3b5de282a415e58

Asynchronous File Upload With Bootstrap Progress Bar Indicator

  • "JQUERY AJAX FORM " provides Asynchronous File upload feature.
  • The plugin can be found in the below link:-

http://malsup.com/jquery/form/#download

  • To know about basics of this plugin checkout my previous post where i have shown a demo for asynchronous form upload.
  • In This Demo, "We will see a File upload with a BOOTSTRAP progress bar indicator".
  • Some of the facts of this demo:-

---- Used WAMP Server for deploying the Demo.
---- A BLANK dummy php file(dummy-file-upload.php) for target of file upload.
---- BOOTSTRAP for styling and progress bar indicator.

  • The Demo directory structure is as below:-

  • This plugin provides a method called "uploadProgress" with 4 parameters:-

event : shows the Progress bar event.
position : The current position of uploading file.
total : Total File Size.
percentComplete :Uploaded file in percent.

  • The HTML markup for bootstrap panel and file upload form is as below.
<!DOCTYPE html>
<html>
<head>
 <title>Jquery AjaxForm With Bootstrap Style</title>
 <link rel="stylesheet" href="./css/bootstrap.min.css">
 <link rel="stylesheet" href="./css/my-style.css">
</head>
<body>
 <form action="dummy-file-upload.php" id="my-detail-form" method="post" enctype="multipart/form-data">
 <!--Bootstrap Panel Markup :start -->
 <div class="panel panel-info ts-file-panel">
 <div class="panel-heading">
 <h3 class="panel-title">Ajax File Upload With Bootstrap</h3>
 </div>
 <div class="panel-body">
 <input name='filename' type="file" placeholder="Browse File.">
 <button type="submit" class="btn btn-info">UPLOAD</button>
 </div>
 <div class="panel-footer">
 <p class="text-left text-info">
 This Demo is For Asynchronous File upload using Ajax Form PlugIn.
 CSS styles are done using Bootstrap Library.
 <p>
 <div class="ts-hidden-bar">
 <!--Bootstrap Progressbar Markup :start -->
 <div class="progress progress-striped active ">
 <div class="progress-bar" role="progressbar" style="width: 0%">
 <span class="sr-only">0% Complete</span>
 </div>
 </div>
 </div>
 <span class="ts-file-size"></span>
 <span class="ts-file-completed"></span>
 <!--Bootstrap Progressbar Markup :end -->
 <!--Bootstrap Alert Markup :start -->
 <div class="alert alert-warning my-message-error">
 <a href="#" class="alert-link">...</a>
 </div>
 <!--Bootstrap Alert Markup :end -->
 </div>
 </div>
 <!--Bootstrap Panel Markup :end -->
 </form>
 <script src="lib/jquery-1.10.1.min.js"></script>
 <script src="lib/jquery.form.min.js"></script>
 <script src="my-form-script.js"></script>
</body>
</html>
  • The javascript file for validation and uploading file is as bellow,
/**
 * Created by saan on 10/6/13.
 */
var TS_AJAX_FORM ={
 /*ERROR Message Display Element Reference*/
 MY_MESSAGE_ERR : $(".my-message-error"),
 /*SUCCESS Message Display Element Reference*/
 MY_MESSAGE_SUC : $(".my-message-success"),
 /*Shows the input message and hides it in 5 seconds*/
 showMessage:function(msg, type){
 var message = (type === 'ERR')? this.MY_MESSAGE_ERR : this.MY_MESSAGE_SUC,
 txt = $(message).find('a');
 $(txt).html(msg);
 message.fadeIn('fast',function(){
 message.fadeOut(5000);
 })
 },
 /*
 *Handler: success, Once the form is submitted and response
 *arrives, it will be activated.
 */
 successHandler: function(responseText, statusText, xhr, form){
 $('.ts-file-panel .progress-bar').width('100%');
 $('.ts-hidden-bar').delay(1000).fadeOut('fast')
 },
 /*
 *responseText, statusText, xhr, $form: beforeSubmit, for validation Let, title and roll is your required field.
 *Let's show an error message if these fields are blank.
 */
 beforeSubmitHandler:function(arr, form, options){
 var isValid = true;
 $.each(arr,function(index, aField){
 if('filename' === aField.name && aField.value === ""){
 TS_AJAX_FORM.showMessage("Please Select a File.", "ERR");
 isValid = false;
 }
 });
 if(isValid){
 $('.ts-hidden-bar').fadeIn();
 }
 return isValid;
 },
 handleUploadProgress: function(event, position, total, percentComplete ){
 $('.ts-file-panel .progress-bar').width(percentComplete+'%');
 $('.ts-file-size').html((total/(1024*1024))+'MB');
 $('.ts-file-completed').html('Position'+position+' event '+event);
 },
 /*Initializing Ajax Form*/
 initMyAjaxForm:function(){
 $("#my-detail-form").ajaxForm({
 beforeSubmit:this.beforeSubmitHandler,
 success:this.successHandler,
 clearForm:true,
 uploadProgress:this.handleUploadProgress
 });
 }
};
/*My Small Tutorial: Execution point*/
$(document).ready(function(){
 TS_AJAX_FORM.initMyAjaxForm()
});
  • The initial rendering of the panel is as below:-
  • The Firebug markup inspection shows the form element using multipart for file upload.The screenshot for this is as below,
  • When no file is selected and upload button is pressed a validation error message will be shown at the footer of the panel.The screenshot for this as below,
  • When a file is browsed and selected it will look like below screen,

  • Below screenshot shows the file upload is on going/inprogress ,
  • The Firebug inspection on file upload screenshot as below,
  • The Firebug console for POST HEADER screenshot as below,
  • Demo code Download Link:-

demo download link

HandleBar Control Statements Getting Started With Tornado Web framework
Sandeep

A passionate Blogger and Developer.Love to code for web application using JavaScript.At present I am exploring the Web Component Specification.

12 years ago ajax 15,576

AltStyle によって変換されたページ (->オリジナル) /