[php] Zerstört base64 binäre Daten?
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!
Antwort schreiben
Antwort 1 von Supermax vom 18.07.2021, 17:06 Options
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.
Antwort 2 von programmierwilly vom 18.07.2021, 18:26 Options
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
Antwort 3 von programmierwilly vom 18.07.2021, 22:09 Options
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 :)
Antwort 4 von programmierwilly vom 18.07.2021, 22:17 Options
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...