Hey Guyz in the tutorial i am going to teach you how to create a file upload system with progress bar with raw ajax. This is very useful for the hosting website because it give a great feedback to the user how much their file has been uploaded. This type to project can be created easily with a code library like jQuery but its greate to create it via raw ajax it give a greate understanding that what is going on
live Demo Download Watch Video
html
html markup is super easy in this we have a form a progressbar and a empty status div
<form action="upload_back.php" method="post" enctype="multipart/form-data" id="form"> <input type="file" name="file1" id="file1"> <input type="submit" name="submit" id="submit" value="upload"> </form> <br> <div style="width:400px;"> <div id="progressbar"> <div id="progress" style="width:0px;"></div> </div> </div> <div id="status"></div>
css
in css we are designing the progress bar fro more details view my previous post on Css3 Progress Bar
<style type="text/css"> #progressbar{ width: 100%; background: #eee; padding: 3px; border-radius: 3px; box-shadow: inset 0px 1px 3px rgba(0,0,0,0.2); } #progress{ height: 20px; background: cornflowerblue; display: block; border-radius: 3px; -webkit-transition: width 0.8s ease; -moz-transition: width 0.8s ease; transition: width 0.8s ease; } </style>
JavaScript
in javascript we are sending the uploded data to the upload_back.php page and by diving the kb send and total kb we get the percentage of how much the file is uploaded
<script type="text/javascript"> var ajax = new XMLHttpRequest(); function $(id){ return document.getElementById(id); } function upload(e){ e.preventDefault(); var file = $("file1").files[0]; var formdata = new FormData(); formdata.append('file1', file); ajax.upload.addEventListener('progress', progressHandler, false); ajax.addEventListener('load', completeHandler, false); ajax.addEventListener('abort', abortHandler, false); ajax.addEventListener('error', errorHandler, false); ajax.open('POST', 'upload_back.php'); ajax.send(formdata); } function progressHandler(e){ var percent = (e.loaded / e.total) * 100; percent = Math.round(percent); $('progress').style.width = Math.round(percent)+'%'; $('status').innerHTML = percent + '% uploaded plzz wait.....'; } function completeHandler(){ $('status').innerHTML = ajax.responseText; $('progress').style.width = '0%'; } function abortHandler(){ alert('file upload aborted'); } function errorHandler(){ alert('file upload has an error'); } //when form is submited $('form').addEventListener('submit', upload, false); </script>
upload_back.php
in php file first we are getting the extension of the image and if iuts valid then we upload the file and show the link
<?php function getext($img){ $name = strtolower($img); $data = explode(".", $name); $ext = count($data) -1; return $data[$ext]; } if(isset($_FILES)){ $allowed = array('jpg','png','gif'); $ext = getext($_FILES['file1']['name']); $size = $_FILES['file1']['size']; if(in_array($ext, $allowed)){ if($size < 2097152){ $name = $_FILES['file1']['name']; if(move_uploaded_file($_FILES['file1']['tmp_name'], './upload/'.$name)){ echo '<a href="./upload/'.$name.'">'.$name.'</a>'; }else{ echo "file upload has an error"; } }else{ echo "File size more than <strong>2MB<strong>"; } }else{ echo "file type not allowed"; } }else{ echo "not"; } ?>
No comments:
Post a Comment