1.4k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo Leute,

meine mit base64 gespeicherten Daten scheinen irgendwie kaputt zu sein, bzw. scheine ich etwas aus Unwissenheit nicht beachtet zu haben.

Speichern:
HTML-Formular -> Upload(Multipart) -> PHP-Skript -> base64_encode -> INSERT in SQL

Lesen:
PHP-Skript -> base64_decode -> an Client mitMIME Image/jpg -> Fehler

Browser zeigt bei Bildern kein Bild, sondern nur die URL die eigentlich das Bild liefern sollte

Bei header mit attached- Kennung werde ich zum speichern aufgefordert, das Bild ist jedoch auch mit Gimp nicht zu öffnen.

Irgendwo werden irgendwie die Daten vermurxt

was ist bei meinem Prozess zu beachten? Gibt es irgendwelche mir nicht bekannten Tricks?

DANKE!

4 Antworten

0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Poste doch mal den relevanten Code.

Eventuell ist eine der "magic_quotes"-Direktiven für PHP aktiviert, sodaß irgendwo in deine base64-codierten Daten überflüssige Zeichen eingefügt werden.
0 Punkte
Beantwortet von
Hallo Supermax,

zu den "magic-quotes" kann ich nichts sagen, bis zu deinem Posting wusste ich nicht mal von deren Existenz... Mein Server ist eine normale Ubuntu 9.04 Version ohne jegliche Änderungen an Apache oder PHP. Alles ist so wie es automatisch eingerichtet wird.

Code kann ich jetzt noch nicht posten, das relevante System ist in einer anderen Stadt. Ich schau nachher nochmal hier rein.

Hast du denn einen Verdacht woran es liegen könnte? Die Daten einer Datei werden ja nur als String verarbeitet. Eigentlich kann man (naja außer ich scheinbar) dabei nix falsch machen :)

Vielen Dank erstmal
0 Punkte
Beantwortet von
Nachtrag:

Nun habe ich eine einfache .txt-Datei in die Datenbank gespeichert und ausgelesen. Beim Auslesen habe ich

header ("Content-type: image/png");
header("Content-Disposition: attachment");

genommen und die Datei gespeichert. Das anschließende Öffnen der Datei mit einem Texteditor hat bestens funktioniert, der Inhalt war absolut fehlerfrei. (Wobei die Datei auch sehr kurz war 2 Zeilen, 20 Zeichen)

Die Ausgabe habe ich mit

print $datei;
exit;

umgesetzt. Wo könnte mein Problem liegen? Es muss doch möglich sein Dateien mit beliebigen Inhalten wieder aus der DB zu bekommen...

Hilfe :)
0 Punkte
Beantwortet von
Nachtrag 2:

Die Untersuchung eines Vorganges mit einer Bilddatei hat ergeben:

Originaldatei 789 Byte
ausgelesene und gespeicherte Datei 827 Byte

Das sind 38 Byte zu viel...
...