0

Hi there i am currenty working on one upload progress bar.

Here is the code that is showing the upload progress bar:

<!DOCTYPE html>
<html>
<head>
<script>
/* Script written by Adam Khoury @ DevelopPHP.com */
/* Video Tutorial: http://www.youtube.com/watch?v=EraNFJiY0Eg */
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", "mylistener.php");
    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;
}
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>
  <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
  <div id="status"></div>
  <div id="loaded_n_total"></div>
    <input type="button" value="Upload File" onclick="uploadFile()">
</form>
</body>
</html>

When i change this lines to look like this: <form id="upload_form" enctype="multipart/form-data" action="mylistener.php" method="post"> and <input type="submit" value="Upload File" onclick="uploadFile()"> Notice that i've changed the input type from button to submit.

In this way it's giving me error "Upload Aborted" instead of printing the upload progress bar.

When i do that it's submiting the form BUT it's not showing the upload progress bar. So my question is how i can use input type submit and action="mylistener.php" in my HTML form and also make the upload progress bar working. Where is the problem in this Javascript so it's not working in the way i want?

2
  • You should avoid posting questions on the same code simultanteously and just bundle it up into one thread (see this and this) Commented Nov 6, 2013 at 20:21
  • why actually submit if you're using ajax? that's redundant. ajax provide the progress indication, forms don't. you can't have both. Commented Nov 6, 2013 at 21:29

1 Answer 1

1

When you change the: input type="button" to input type="submit" the page actually reloads. Therefore it shows upload aborted. if you want to change the input type to "submit" then add this line of code to your uploadFile function:

    function uploadFile(){
        event.preventDefault();
        event.stopPropagation();
        //here is your rest of the code
    }

now your code will work..

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.