fs.readFileSync('/path/to/file.jpg', {encoding: 'base64'}) dekodiert die Binärdatei nicht … es ist äquivalent zu fs.readFileSync('/path/to/file.jpg', 'utf8') Wir übergeben lediglich ein Codierungsargument, um eine Zeichenfolge anstelle eines Puffers zu erhalten
– Ray Foss
16. März um 16:57 Uhr
Sjoerd
Ich denke, das folgende Beispiel zeigt, was Sie brauchen: Ich habe den Link entfernt, weil er defekt war.
Die Essenz des Artikels ist dieser Codeteil:
var fs = require('fs');
// function to encode file data to base64 encoded string
function base64_encode(file) {
// read binary data
var bitmap = fs.readFileSync(file);
// convert binary data to base64 encoded string
return new Buffer(bitmap).toString('base64');
}
// function to create file from base64 encoded string
function base64_decode(base64str, file) {
// create buffer object from base64 encoded string, it is important to tell the constructor that the string is base64 encoded
var bitmap = new Buffer(base64str, 'base64');
// write buffer to file
fs.writeFileSync(file, bitmap);
console.log('******** File created from base64 encoded string ********');
}
// convert image to base64 encoded string
var base64str = base64_encode('kitten.jpg');
console.log(base64str);
// convert base64 string back to image
base64_decode(base64str, 'copy.jpg');
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzufügen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert.
– Alexis König
10. März 2015 um 8:04 Uhr
Danke für Ihre Erklärung. Jetzt verstehe ich, warum ich die Ablehnungen bekomme.
– Sjoerd
10. März 2015 um 8:06 Uhr
Wenn das Ziel darin besteht, eine base64-codierte Daten-URI Die Lösung greift etwas zu kurz. Die tatsächlichen Daten sind korrekt, aber die Zeichenfolge fehlt data:[<mediatype>][;base64], Präfix.
– Martin Chang
7. Oktober 2016 um 14:03 Uhr
new Buffer ist überflüssig. fs.readFileSync gibt den Puffer zurück, wenn die Codierung nicht angegeben ist. Du kannst einfach tun fs.readFileSync([..]).toString('BASE64').
– Gajus
25. August 2017 um 18:47 Uhr
@Gajus Du kannst sogar noch weiter gehen. readFileSync kann jetzt die Kodierung für Sie übernehmen. Mach einfach fs.readFileSync('...', { encoding: 'BASE64' })
– Mike Martin
9. Januar 2019 um 23:01 Uhr
var fs = require('fs');
function base64Encode(file) {
var body = fs.readFileSync(file);
return body.toString('base64');
}
var base64String = base64Encode('test.jpg');
console.log(base64String);
Der folgende Code liest eine Textdatei. Konvertiert es dann in Text, liest es dann als base64 und legt es in einen Binärpuffer und speichert es wieder in eine echte Binärdatei.
fs.readFile
nimmt einen String als erstes Argument. Du versuchst, es zu bestehen aBuffer
.– kbr
3. März 2015 um 14:59 Uhr