53 votes

Comment convertir dataURL en objet fichier en javascript ?

J'ai besoin de convertir une dataURL en un objet File en Javascript afin de l'envoyer via AJAX. Est-il possible? Si oui, merci de me dire comment.

4voto

Jan Derk Points 409

Pour créer un blob à partir d'une dataURL :

 const blob = await (await fetch(dataURL)).blob(); 

Pour créer un fichier à partir d'un blob :

 const file = new File([blob], 'fileName.jpg', {type:"image/jpeg", lastModified:new Date()});

0voto

EpokK Points 11131

Après quelques recherches je suis arrivé sur celui-ci :

 function dataURItoBlob(dataURI) {
    // convert base64 to raw binary data held in a string
    // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
    var byteString = atob(dataURI.split(',')[1]);
    // separate out the mime component
    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
    // write the bytes of the string to an ArrayBuffer
    var ab = new ArrayBuffer(byteString.length);
    var dw = new DataView(ab);
    for(var i = 0; i < byteString.length; i++) {
        dw.setUint8(i, byteString.charCodeAt(i));
    }
    // write the ArrayBuffer to a blob, and you're done
    return new Blob([ab], {type: mimeString});
}

module.exports = dataURItoBlob;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X