2014-06-18 5 views
22

Ich habe den folgenden Code in meinem Javascript bekommt:Wie man Art vom Javascript FileReader base64 Schnur abzieht?

var reader = new FileReader(); 
reader.onloadend = function() { 
    alert(reader.result); 
}; 

Das zeigt mir die folgenden Daten:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAAAAABX3VL4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gYSDCUgSze0AAAAAA5JREFUCNdjrGJgYmAAAAJ0AH4SDHVIAAAAAElFTkSuQmCC 

Die Sache ist, dass ich nur den Teil nach dem Komma werden soll. Ich habe versucht, es von reader.result.value, reader.result.valueOf() und einige andere Kombinationen zu bekommen, aber kann nicht die richtige finden, um nur die Base64-Zeichenfolge ab dem Komma beginnend zu bekommen. Also eine zweite Idee ist, einfach das Komma und alles, was davor ist, zu entfernen, aber ich bin mir irgendwie nicht sicher, wie ich das machen soll.

Hätte jemand eine Idee, wie man das erledigt? Alle Tipps sind willkommen!

+3

'var base64result = reader.result.split ('') [1];' 'oder base64result var = reader.result.substr (reader.result.indexOf (',') + 1); ' –

Antwort

42

Die folgenden Funktionen werden das gewünschte Ergebnis erreichen:

var base64result = reader.result.split(',')[1]; 

Diese die Zeichenfolge in ein Array von Zeichenketten mit dem ersten Element spaltet (Index 0) data:image/png;base64 und dem zweiten Element (Index 1), enthaltend die Base64 enthält kodierte Daten.

Eine weitere Lösung ist der Index des Komma zu finden und dann einfach alles abgeschnitten vor und einschließlich das Komma:

var base64result = reader.result.substr(reader.result.indexOf(',') + 1); 

JSFiddle See.

+0

Können wir sicher wissen, dass ein Komma niemals in der base64-Zeichenfolge selbst auftreten wird? Wenn ja, sehr gute Lösungen. –

+4

Ja, wir wissen es sicher. Die Base64-Kodierung verwendet die Zeichen [a-z, A-Z, 0-9, +, /] 'zum Kodieren. '=' wird auch zum Auffüllen verwendet. Siehe [Base64] (https://en.wikipedia.org/wiki/Base64). –

+0

Ausgezeichnet. Vielen Dank für Ihre Erklärung. –

9
let reader: FileReader = new FileReader(); 

reader.onloadend = (e) => { 
    let base64String = reader.result.split(',').pop(); 
}; 

oder

let base64String = /,(.+)/.exec(reader.result)[1]; 
Verwandte Themen