Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • How to create progress bar for uploading file using PHP

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 195
    Comment on it

    Hello Reader's!, If you are developing the html 5 based form and need to show the progress bar of file uploading then you can use the following code written in PHP and Javascript:-

    The PHP html file will be go like this:-

    <?php  
    //get unique id 
    $up_id = uniqid();  
    ?> 
    
    <?php 
    //process the forms and upload the files 
    if ($_POST) { 
    //specify folder for file upload 
    $folder = "tmp/";  
    //specify redirect URL 
    $redirect = "upload.php?success"; 
    move_uploaded_file($_FILES["file"]["tmp_name"], "$folder" . $_FILES["file"]["name"]); 
    //do whatever else needs to be done (insert information into database, etc...) 
    header('Location: '.$redirect); die; 
    } 
    // 
    
    ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title>Upload your file</title> 
    <!--Progress Bar and iframe Styling--> 
    <link href="style_progress.css" rel="stylesheet" type="text/css" /> 
    <!--Get jQuery--> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.js" type="text/javascript"></script> 
    <!--display bar only if file is chosen--> 
    <script> 
    $(document).ready(function() {  
    //show the progress bar only if a file field was clicked 
        var show_bar = 0; 
        $('input[type="file"]').click(function(){ 
            show_bar = 1; 
        }); 
    
    //show iframe on form submit 
        $("#form1").submit(function(){ 
    
            if (show_bar === 1) {  
                $('#upload_frame').show(); 
                function set () { 
                    $('#upload_frame').attr('src','upload_frame.php?up_id=<?php echo $up_id; ?>'); 
                } 
                setTimeout(set); 
            } 
        }); 
    // 
    
    }); 
    </script> 
    </head> 
    <body> 
    <h1>Upload your file </h1> 
    
    <div> 
      <?php if (isset($_GET['success'])) { ?> 
      <span class="notice">Your file has been uploaded.</span> 
      <?php } ?> 
      <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
        Name<br /> 
        <input name="name" type="text" id="name"/> 
        <br /> 
        <br /> 
        Your email address <br /> 
        <input name="email" type="text" id="email" size="35" /> 
        <br /> 
        <br /> 
        Choose a file to upload<br /> 
    
    <!--APC hidden field--> 
        <input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo $up_id; ?>"/> 
      <input name="file" type="file" id="file" size="30"/> 
    
       <br /> 
        <iframe id="upload_frame" name="upload_frame" frameborder="0" border="0" src="" scrolling="no" scrollbar="no" > </iframe> 
        <br /> 
        <input name="Submit" type="submit" id="submit" value="Submit" /> 
      </form> 
      </div> 
    </body> 
    </html> 
    

    And the form action page upload.php will go like this:-

        <?php     
        $url = basename($_SERVER['SCRIPT_FILENAME']);     
        //Get file upload progress information. 
        if(isset($_GET['progress_key'])) { 
            $status = apc_fetch('upload_'.$_GET['progress_key']); 
            echo $status['current']/$status['total']*100; 
            die; 
        }          ?> 
    
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.js" type="text/javascript"></script> 
        <link href="style_progress.css" rel="stylesheet" type="text/css" /> 
    
        <script> 
        $(document).ready(function() {  
       setInterval(function()  
                { 
            $.get("<?php echo $url; ?>?progress_key=<?php echo $_GET['up_id']; ?>&randval="+ Math.random(), {  
                //get request to the current URL (upload_frame.php) which calls the code at the top of the page.  It checks the file's progress based on the file id "progress_key=" and returns the value with the function below:
            }, 
                function(data)    //return information back from jQuery's get request 
                    { 
                        $('#progress_container').fadeIn(100);    //fade in progress bar     
                        $('#progress_bar').width(data +"%");    //set width of progress bar based on the $status value (set at the top of this page) 
                        $('#progress_completed').html(parseInt(data) +"%");    //display the % completed within the progress bar 
                    } 
                )},500);    //Interval is set at 500 milliseconds (the progress bar will refresh every .5 seconds) 
    
        });    
        </script>    
        <body style="margin:0px"> 
        <!--Progress bar divs--> 
        <div id="progress_container"> 
            <div id="progress_bar"> 
                   <div id="progress_completed"></div> 
            </div> 
        </div> 
        </body>
    

    And last thing is CSS:-

    /*iframe*/
    #upload_frame {
        border:0px;
        height:40px;
        width:400px;
        display:none;
    }
    
    #progress_container {
        width: 300px; 
        height: 30px; 
        border: 1px solid #CCCCCC; 
        background-color:#EBEBEB;
        display: block; 
        margin:5px 0px -15px 0px;
    }
    
    #progress_bar {
        position: relative; 
        height: 30px; 
        background-color: #F3631C; 
        width: 0%; 
        z-index:10; 
    }
    
    #progress_completed {
        font-size:16px; 
        z-index:40; 
        line-height:30px; 
        padding-left:4px; 
        color:#FFFFFF;
    }
    

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: