<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.bundle.min.js"></script>
<title>Progress Bar Upload</title>
</head>
<body>
<div class="container p-5 text-center">
<div class="header bg-primary p-4 rounded text-white w-50 mx-auto">Ajax Image Upload with Progress Bar</div>
<form id='uploadform'>
<label style="display: block;">
<img id="uploadimage2" src="img/featured.gif" style="width: 300px;
height: 300px;
cursor: pointer;
object-fit: cover;
object-position: center top;
padding: 6px;
border-radius: 13xp;
border: 1px solid;
border-radius: 6px;
margin: 11px;">
<input type="file" name="filename" style="display: none;" id="uploadimage_src" onchange="imagepreview_upload(event)">
</label>
<div class="container w-50 mx-auto" id="progress" style="display: none;">
<hr>
<div class="progress" style="height: 26px;">
<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">Uploading (0%)</div>
</div>
<hr>
</div>
<div class="form-group">
<input type="submit" value="Upload" class="btn btn-primary">
</div>
</form>
</div>
<script>
//Declaring the ajax on submit function
$(document).ready(function () {
$(uploadform).submit(function (e) {
var progress = $('.progress-bar');
var progressCon = $('#progress');
e.preventDefault();
if ($('#uploadimage_src').val() == '') {
alert('Please selet file');
return;
}
$.ajax({
type: "POST",
url: "upload.php",
data: new FormData(uploadform),
cache:false,
contentType: false,
processData: false,
beforeSend: () => {
console.log('Image processing');
$(progressCon).slideDown();
},
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = (evt.loaded / evt.total) * 100;
console.log(percentComplete);
//Do something with upload progress here
$(progress).attr("aria-valuenow", percentComplete.toFixed(0));
$(progress).width(percentComplete.toFixed(0)+'%');
$(progress).text('Uploading ('+percentComplete.toFixed(2)+'%)');
}
}, false);
return xhr;
},
success: function (response) {
console.log(response);
$(progress).text('Uploaded (100%)');
$(progress).addClass('bg-success');
$('#uploadimage2').attr('src', 'img/featured.gif');
setTimeout(() => {
$(progressCon).fadeOut(() => {
$(progress).removeClass('bg-success');
$(progress).addClass('bg-primary');
$(progress).attr("aria-valuenow", '0');
$(progress).width('0%');
$(progress).text('Uploading (0%)');
});
}, 3000);
}
});
});
});
function imagepreview_upload(event) {
var reader = new FileReader();
var imagefield = document.getElementById('uploadimage2');
reader.onload = function() {
if (reader.readyState == 2) {
imagefield.src = reader.result;
// console.log(reader.result);
}
}
reader.readAsDataURL(event.target.files[0]);
}
</script>
</body>
</html>
|