Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Excerpt

asdas

By the combination of PHP + HTML + Ajax, you can render an file upload progress bar in your file upload forms. It will help for user to understand what is going on on server side, and the user may able to recognize if anything wrong is happen.


Code Block
languagejs
titleupload_form.html
<!DOCTYPE html>
<html>
<head>
<script>
/* Script written by Adam Khoury @ DevelopPHP.com */
/* Video Tutorial: http://www.youtube.com/watch?v=EraNFJiY0Eg */
Code Block
<script>
function _(el) {
  	return document.getElementById(el);
}

function uploadFile() {
  	var file = _("file1").files[0];
  	// alert(file.name+" | "+file.size+" | "+file.type);
  	var formdata = new FormData();
  	formdata.append("file1", file);
  	var ajax = new XMLHttpRequest();
  	ajax.upload.addEventListener("progress", progressHandler, false);
  	ajax.addEventListener("load", completeHandler, false);
  	ajax.addEventListener("error", errorHandler, false);
  	ajax.addEventListener("abort", abortHandler, false);
  	ajax.open("POST", "file_upload_parser.php"); // http://www.developphp.com/video/JavaScript/File-Upload-Progress-Bar-Meter-Tutorial-Ajax-PHP
  //use file_upload_parser.php from above url
  
	ajax.send(formdata);
}

function progressHandler(event) {
  	_("loaded_n_total").innerHTML = "Uploaded " + event.loaded + " bytes of " + event.total;
  	var percent = (event.loaded / event.total) * 100;
  	_("progressBar").value = Math.round(percent);
  	_("status").innerHTML = Math.round(percent) + "% uploaded... please wait";
}

function completeHandler(event) {
  	_("status").innerHTML = event.target.responseText;
  	_("progressBar").value = 0; //wil clear progress bar after successful upload
}

function errorHandler(event) {
  	_("status").innerHTML = "Upload Failed";
}

function abortHandler(event) {
  	_("status").innerHTML = "Upload Aborted";
}
</script>
</head>
<body>
<h2>HTML5 File Upload Progress Bar Tutorial</h2>
<form id="upload_form" enctype="multipart/form-data" method="post">
  <input type="file" name="file1" id="file1"><br>
  <input type="button" value="Upload onchangeFile" onclick="uploadFile()"><br>>
  <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
  <h3 id="status"></h3>
  <p id="loaded_n_total"></p>
</form>
</body>
</html>


Code Block
languagephp
titlefile_upload_parser.php
<?php
$fileName = $_FILES["file1"]["name"]; // The file name
$fileTmpLoc = $_FILES["file1"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["file1"]["type"]; // The type of file it is
$fileSize = $_FILES["file1"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["file1"]["error"]; // 0 for false... and 1 for true
if (!$fileTmpLoc) { // if file not chosen
    echo "ERROR: Please browse for a file before clicking the upload button.";
    exit();
}
if(move_uploaded_file($fileTmpLoc, "test_uploads/$fileName")){
    echo "$fileName upload is complete";
} else {
    echo "move_uploaded_file function failed";
}
?>


You will be able to see its result like below when you run above code:

...