OneBite.Dev - Coding blog in a bite size

How to upload image / file in firebase with progress bar

Learn how to upload image or any file in firebase with progress bar to show how many percent your data already uploaded

Learn how to upload image or any file in firebase with progress bar to show how many percent your data already uploaded. First we add the upload functionality, don’t forget to give it an id

<input type="file" value="upload" id="uploadButton">

Setup firebase

just like other firebase project you have to load the necessary firebase’s js file and set the configuration, now specific for the upload part

var storage  = firebase.storage()
var button = document.getElementById('uploadButton')
button.addEventListener('change', function(e){
    var file = e.target.files[0]	
    var storageRef = storage.ref("foldername/" + file.name)
    storageRef.put(file)
})

that’s it, try to upload any fire you want, it works. But of course, there is no feedback for now, we don’t really know if it successful or not. So, let’s give it a nice feedback for user by showing the progress bar

Add progress bar

Here is the code how to add progress bar when you upload

//add new progressbar Button
<progress value="0" max="100" id="uploadProgress">0%</progress>
//new javascript
var progress = document.getElementById('uploadProgress')
button.addEventListener('change', function(e){
var file = e.target.files[0]
var storageRef  = storage.ref("foldername/" + file.name)
var uploadTask = storageRef.put(file)

uploadTask.on('state_changed', loadUpload, errUpload, completeUpload)
    //show progress  
    function loadUpload(data){  
        var percent = (data.bytesTransferred/data.totalBytes) * 100  
        progress.value = percent  
    }
    
    //On error    
    function errUpload(err){      
        console.log('error')      
        console.log(err)    
    }
    
        //On success  
        function completeUpload(data){      
            console.log('success')      
            console.log(data)   
        }
}) 
firebase