Ich muss ein Bild auf den NodeJS-Server in ein Verzeichnis hochladen. Ich benutze dafür das connect-busboy
Knotenmodul.
Ich hatte das dataURL
Bild, das ich mit dem folgenden Code in Blob konvertiert habe:
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});
}
Ich brauche eine Möglichkeit, den Blob in eine Datei zu konvertieren, um das Bild hochzuladen.
Könnte mir jemand dabei helfen?
javascript
node.js
file-upload
blob
überspringen
quelle
quelle
blob
. Also extrahierte ich zuerst den Namen der Datei, die ichfilename
beschnitten hatte, und gab dann den gleichen Namen wie die zugeschnittene Datei, während ich sie auf den Server hochludform.append("blob",blob, filename);
.Antworten:
Diese Funktion wandelt a
Blob
in a umFile
und funktioniert hervorragend für mich.Vanille JavaScript
TypeScript (mit korrekter Eingabe)
Verwendung
quelle
any
in TypeScript verwenden müssen. Siehe dieses Beispiel.b.__proto__ = File.prototype
und Ihre Lösung wird ein Traum , dass auch Tricksb instanceOf File
zutrue
Sie können den Dateikonstruktor verwenden:
Gemäß der w3-Spezifikation werden die im Blob enthaltenen Bytes an die Bytes für das neue Dateiobjekt angehängt und die Datei mit dem angegebenen Namen http://www.w3.org/TR/FileAPI/#dfn-file erstellt
quelle
TypeError: FileConstructor is not a constructor (evaluating 'new File([''], 'file.pdf', {'size': 1000, 'type': 'application/pdf'})')
Die Antwort von Joshua P Nixon ist richtig, aber ich musste auch das Datum der letzten Änderung festlegen. Also hier ist der Code.
1534584790000 ist ein Unix-Zeitstempel für " GMT: Samstag, 18. August 2018, 9:33:10 Uhr ".
quelle
instanceof
wie die akzeptierte AntwortDamit ich arbeiten konnte, musste ich den Typ explizit angeben, obwohl er im Blob enthalten ist:
quelle
Meine moderne Variante:
quelle
fd.set('a', blobData, 'filename')
fd.set
Verwendung
saveAs
im FileSaver.js- Github-Projekt.FileSaver.js
Implementiert diesaveAs()
FileSaver-Oberfläche in Browsern, die sie nicht nativ unterstützen.quelle