Comment convertir Blob en fichier en JavaScript

J'ai besoin de télécharger une image sur le serveur NodeJS dans un répertoire. J'utilise le module nœud connect-busboy pour cela.

J'ai eu le dataURL de l'image que j'ai converti en blob en utilisant le code suivant:

 dataURLToBlob: function(dataURL) { var BASE64_MARKER = ';base64,'; if (dataURL.indexOf(BASE64_MARKER) == -1) { var parts = dataURL.split(','); var contentType = parts[0].split(':')[1]; var raw = decodeURIComponent(parts[1]); return new Blob([raw], {type: contentType}); } var parts = dataURL.split(BASE64_MARKER); var contentType = parts[0].split(':')[1]; var raw = window.atob(parts[1]); var rawLength = raw.length; var uInt8Array = new Uint8Array(rawLength); for (var i = 0; i < rawLength; ++i) { uInt8Array[i] = raw.charCodeAt(i); } return new Blob([uInt8Array], {type: contentType}); } 

J'utilise AngularJS du côté client. J'ai le code pour télécharger un fichier / image déjà écrit, donc j'ai besoin d'un moyen de convertir le blob en un fichier pour télécharger l'image.

Quelqu'un pourrait-il m'aider?

Cette fonction convertit un Blob en un File et ça marche bien pour moi.

Vanilla JavaScript

 function blobToFile(theBlob, fileName){ //A Blob() is almost a File() - it's just missing the two properties below which we will add theBlob.lastModifiedDate = new Date(); theBlob.name = fileName; return theBlob; } 

TypeScript (avec des typages appropriés)

 function blobToFile(theBlob: Blob, fileName:string): File { var b: any = theBlob; //A Blob() is almost a File() - it's just missing the two properties below which we will add b.lastModifiedDate = new Date(); b.name = fileName; //Cast to a File() type return <File>theBlob; } 

Usage

 var myBlob = new Blob(); //do stuff here to give the blob some data... var myFile = blobToFile(myBlob, "my-image.png"); 

Vous pouvez utiliser le constructeur Fichier:

 var file = new File([myBlob], "name"); 

Selon la spécification w3, cela ajoutera les octets que le blob contient aux octets pour le nouvel objet File et crée le fichier avec le nom spécifié http://www.w3.org/TR/FileAPI/#dfn-file