• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Convert Base64 Image to File

pimbolie1979

Mitglied
Hallo Leute,

ich habe bereits ein Ajax File Upload Scrip geschrieben. Dies funktioniert auch schon recht gut. Ich wähle eine Datei aus und hänge diese an ein FormData Objekt und kann dieses dann mit Ajax an meinen Server schicken. Dort wird es dann per PHP Skript in die Datenbank eingetragen und noch in einen anderen Ordner verschoben.

Nun habe ich jedoch nicht eine Datei sonder ein Base64 Image. Dieses möchte ich in eine Datei zurückwandeln und dann wieder mit Hilfe des FormData Objekts und Ajax auf meinem Server hochladen.

Jedoch habe ich noch keinen passenden Converter oder Funktion gefunden. Das muss noch irgendwie gehen. Kann ich nicht den Inhalt von der Datein ersetzen? Man kann auch den Base64 Stream hochladen jedoch fehlt dann der Dateiname usw. Außerdem ist mein PHP Skript schon fertig.

Es muss doch eine Möglichkeit geben diesen Base64 Image Stream wieder in eine Dateiformat zu wandeln. Kennt jemand eine Funktion, Oder kann mir vielleicht jemand ein Beispiel posten wie ich es schaffen kann.

Der Base64 Image Stream kommt dadurch zustande das ich die Datei vor dem Upload verkleinern will. Ich möchte keine 10MB Bilder auf den Server laden und dann perh PHP das Bild verkleinern. Dies belastet doch nur unnötig den Server.
 
Werbung:
Hallo Leute,

ich habe bereits ein Ajax File Upload Scrip geschrieben. Dies funktioniert auch schon recht gut. Ich wähle eine Datei aus und hänge diese an ein FormData Objekt und kann dieses dann mit Ajax an meinen Server schicken. Dort wird es dann per PHP Skript in die Datenbank eingetragen und noch in einen anderen Ordner verschoben.

Nun habe ich jedoch nicht eine Datei sonder ein Base64 Image. Dieses möchte ich in eine Datei zurückwandeln und dann wieder mit Hilfe des FormData Objekts und Ajax auf meinem Server hochladen.

Jedoch habe ich noch keinen passenden Converter oder Funktion gefunden. Das muss noch irgendwie gehen. Kann ich nicht den Inhalt von der Datein ersetzen? Man kann auch den Base64 Stream hochladen jedoch fehlt dann der Dateiname usw. Außerdem ist mein PHP Skript schon fertig.

Es muss doch eine Möglichkeit geben diesen Base64 Image Stream wieder in eine Dateiformat zu wandeln. Kennt jemand eine Funktion, Oder kann mir vielleicht jemand ein Beispiel posten wie ich es schaffen kann.

Der Base64 Image Stream kommt dadurch zustande das ich die Datei vor dem Upload verkleinern will. Ich möchte keine 10MB Bilder auf den Server laden und dann perh PHP das Bild verkleinern. Dies belastet doch nur unnötig den Server.

Google "base64 to image php":
http://stackoverflow.com/questions/15153776/convert-base64-string-to-an-image-file
 
1. Diese Methode hatte ich gestern Nacht auch noch gefunden. Ich übertrage den base64 Data Stream zum Server und wandel Diesen dann in eine Datei um und speicher die erzeugte Datei dann.

2. Eine weitere Möglichkeit die ich gefunden habe ist das man einen BLOB erzeugt, das ist ein Datei ähnlicher Container und den kann man dann wieder per Ajax sende.

Jetzt muss ich mich blos zwischen den beiden Möglichkeiten entscheiden. Ist es denn besser den Base64 Stream an den Server zu übertragen? Was benötigt denn mehr Internetbandbreite?
 
Werbung:
1. Diese Methode hatte ich gestern Nacht auch noch gefunden. Ich übertrage den base64 Data Stream zum Server und wandel Diesen dann in eine Datei um und speicher die erzeugte Datei dann.

2. Eine weitere Möglichkeit die ich gefunden habe ist das man einen BLOB erzeugt, das ist ein Datei ähnlicher Container und den kann man dann wieder per Ajax sende.

Jetzt muss ich mich blos zwischen den beiden Möglichkeiten entscheiden. Ist es denn besser den Base64 Stream an den Server zu übertragen? Was benötigt denn mehr Internetbandbreite?

Achso, ich dachte du willst einen base64 String. Dieser ist von der Datenmenge her größer.
Ich würde einen Blob via FormData übermitteln.
 
Ich habe leider noch nicht ganz durchschaut wo der Unterschied zwischen einem base64 String und einem Blob Stream ist. Das ist alles so schlecht dokumentiert.

Normalerweise habe ich doch eine JPEG Datei, die wird doch sicherlich binär abgespeichert. Da ich diese Datei mit dem FormaData Objekt an den Server senden kann, denke ich das die Daten auch weiterhin Binär sind.

Der Base64Stream ist wie der Name bereits sagt nicht binär gespeichert und wird daher sicherlich mehr Bandbreite bei der Übertragung benötigen. Demnach muss ich das Canvas Element nur in ein JPEG wandeln. Dies lieg dann als Base64 Strean vor und anschließend muss ich daraus wieder ein Binärstream wandeln, der aber ein JPEG HEader besitzt. Habe ich das richig verstanden?
 
Zurück
Oben