Skip to content

Instantly share code, notes, and snippets.

@virolea
Last active April 9, 2026 15:39
Show Gist options
  • Select an option

  • Save virolea/e1af9359fe071f24de3da3500ff0f429 to your computer and use it in GitHub Desktop.

Select an option

Save virolea/e1af9359fe071f24de3da3500ff0f429 to your computer and use it in GitHub Desktop.
Tracking file upload progress using axios
upload(files) {
const config = {
onUploadProgress: function(progressEvent) {
var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)
console.log(percentCompleted)
}
}
let data = new FormData()
data.append('file', files[0])
axios.put('/endpoint/url', data, config)
.then(res => console.log(res))
.catch(err => console.log(err))
}
@lchelek
Copy link
Copy Markdown

lchelek commented Sep 28, 2020

thx , usefull

@koko37
Copy link
Copy Markdown

koko37 commented Sep 30, 2020

I have added onDownloadProgress and onUploadProgress, with Rails and VueAxios.
onDownloadProgress is calling normaly, but onUploadProgress is not calling anyway.
I can not find the reason for this one.
Any suggestion for this ?

@PatelDhrupal
Copy link
Copy Markdown

You are champ.

@ShrikantaMazumder
Copy link
Copy Markdown

Thanks

@lucaswinningham
Copy link
Copy Markdown

Thanks

@Lakmal98
Copy link
Copy Markdown

Thank you ♥

@Nikolov0080
Copy link
Copy Markdown

Very useful,have a wonderful day!

@kayotimoteo
Copy link
Copy Markdown

Thanks you 🚀

@Lesleytech
Copy link
Copy Markdown

Lesleytech commented Nov 21, 2020

Thanks a bunch! Clean & nice code

@futuster
Copy link
Copy Markdown

Спасибо!

With some improvements:

const onUploadProgress = event => {
    const percentCompleted = Math.round((event.loaded * 100) / event.total);
    console.log('onUploadProgress', percentCompleted);
};

const upload = async files => {
    const data = new FormData();
    
    for(const [index, file] of files.entries()){
        data.append(index, file); // append all files
    }

    try {

        const result = await axios.put('/endpoint/url', data, {onUploadProgress});

        console.log('result is', result); // result is server's response

    } catch(error){
        console.error(error);
    } finally {
        console.log('Upload complete');
    }
}

@IsaacMujica
Copy link
Copy Markdown

Very thanks all to be so kind to share a great code!!

@jovandyaz
Copy link
Copy Markdown

@virolea, that's still works and it's simply cool! Thanks a lot!
@futuster, nice touch!

@thanet-s
Copy link
Copy Markdown

thanet-s commented Feb 3, 2021

Verry nice! Thanks

@yarivShamash
Copy link
Copy Markdown

Thanks a lot!!

@kogrenich
Copy link
Copy Markdown

Thanks!

@rafgk
Copy link
Copy Markdown

rafgk commented Apr 22, 2021

Useful, thanks!

@mahmutatmaca
Copy link
Copy Markdown

I when try take request.upload.addEventListener in not a function

@goonursultan
Copy link
Copy Markdown

thanks bro

@Hoodgail
Copy link
Copy Markdown

wow, this code works exactly as written by you. thanks man, nice code

@flash548
Copy link
Copy Markdown

Thank you!

@designbyadrian
Copy link
Copy Markdown

This is code and I thank.

I am not a bot.

@DawnImpulse
Copy link
Copy Markdown

simple, efficient & works... thanks a lot

@oggbarcelos
Copy link
Copy Markdown

Thanks.

@mixelburg
Copy link
Copy Markdown

you lou bro :)

@premrajah
Copy link
Copy Markdown

Really helpful, thanks

@Roey7
Copy link
Copy Markdown

Roey7 commented May 15, 2023

Nice. thanks!

@nvtienlg
Copy link
Copy Markdown

Thank you bro

@mtalha218
Copy link
Copy Markdown

Hi, but this is giving me 401 unauthorized error when i call my API, Why is that?

@MominjonVue
Copy link
Copy Markdown

Thank :)

@mohasinkr
Copy link
Copy Markdown

Thanks, you are a legend!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment