J'ai besoin de télécharger une image sur le serveur NodeJS dans un répertoire. J'utilise le connect-busboy
module de nœud pour cela.
J'ai eu le dataURL
de l'image que j'ai convertie 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'ai besoin d'un moyen de convertir l'objet blob en fichier pour télécharger l'image.
Quelqu'un pourrait-il m'aider?
javascript
node.js
file-upload
blob
sauter
la source
la source
blob
. Donc, j'ai d'abord extrait le nom du fichier que j'étaisfilename
en train de recadrer, puis j'ai donné le même fichier que le fichier recadré tout en le téléchargeant sur le serveur en faisantform.append("blob",blob, filename);
.Réponses:
Cette fonction convertit un
Blob
en unFile
et cela fonctionne très bien pour moi.JavaScript vanille
TypeScript (avec des typages appropriés)
Usage
la source
any
dans TypeScript. Voyez cet exemple.b.__proto__ = File.prototype
, et votre solution devient un rêve que même des toursb instanceOf File
àtrue
Vous pouvez utiliser le constructeur de fichier:
Conformément à la spécification w3, cela ajoutera les octets que le blob contient aux octets du nouvel objet File et créera le fichier avec le nom spécifié http://www.w3.org/TR/FileAPI/#dfn-file
la source
TypeError: FileConstructor is not a constructor (evaluating 'new File([''], 'file.pdf', {'size': 1000, 'type': 'application/pdf'})')
La réponse de Joshua P Nixon est correcte mais je devais aussi fixer la date de la dernière modification. voici donc le code.
1534584790000 est un horodatage unix pour " GMT: samedi 18 août 2018 9:33:10 AM "
la source
instanceof
comme la réponse acceptéePour que je travaille, je devais fournir explicitement le type bien qu'il soit contenu dans le blob en le faisant:
la source
Ma variante moderne :
la source
fd.set('a', blobData, 'filename')
fd.set
À utiliser
saveAs
sur le projet github FileSaver.js .FileSaver.js
implémente l'saveAs()
interface FileSaver dans les navigateurs qui ne la prennent pas en charge de manière native.la source
Manuscrit
Javascript
Production
la source