Wie verwenden Sie base64-Codierung in HTML5 Blob-Objekt
Ich Baue eine Bibliothek auf "nodeize" die HTML5-Datei-Api (derzeit noch in der alpha)[0], um es arbeiten mit dem binären Inhalt haben und keine Probleme mit charsets, ich bin mit Puffer[1] - Dienstprogramm.
Aber die HTML5-Datei-API nutzt die Blob-native-Objekt. Eigentlich bin ich mit dem Typ "application/octet-stream' und 'Binär' aus Puffer-Codierung. Aber, ich möchte base64-um zu verhindern, dass irgendein problem:
CoFS.prototype.writeFile = function (fileName, data, encoding, callback) {
var self = this;
if (Buffer.isBuffer(data)) {
callback = encoding;
encoding = undefined;
} else {
data = new Buffer(data, encoding);
}
this._ifready(function () {
self.getFileEntry(fileName, {create: true, exclusive: true}, function (err, fileEntry) {
if (err) return callback(new Error("Error getting file access " + err.message));
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function () {
callback(null);
};
fileWriter.onerror = function(e) {
callback(new Error(e.toString()));
};
var blob = new Blob([data.toString('binary')], {type: 'application/octet-stream'});
fileWriter.write(blob);
}, function () {
callback(new Error('Error writing ' + fileName));
});
});
});
};
Zumutet auf:
var blob = new Blob([data.toString('binary')], {type: 'application/octet-stream'});
Ich red die MDN-Seite[2], aber ich nicht sehen, etwas über die Codierung.
Gibt es eine Möglichkeit, etwas zu erreichen wie der?:
var blob = new Blob([data.toString('base64')], {type: 'application/octet-stream', encoding: 'base64'});
Danke.
- 0: https://github.com/exos/cofs
- 1: https://github.com/anodynos/node2web_buffer
- 2: https://developer.mozilla.org/en-US/docs/Web/API/Blob
- Wenn Ihr Ziel ist zu schreiben von Binärdaten in eine Datei, die Sie verwenden sollten ein byte array statt als string zu haben.
- Nun, ich erkannte, dass das Puffer-Objekt ist ein Int8Array 😀
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erkannte ich die Buffer-Objekt wird erweitert, von Int8Array, und beide sind kompatibel.
Mein code ist jetzt:
Und für das Lesen, ich benutze readAsArrayBuffer Methode, die Sie tun können:
Diese mein problem lösen. Für das umwandeln in base64 kodierten Inhalt und die Verwendung in einem blob mit Puffer können sein: