Bilder in DB-Prob

theflash

Mitglied
Also ich hab da ein Script das mir Bilder aus der DB ausließt funktioniert auch einwandfrei. Nur das Einlesen macht mir Probleme. Wenn ich mein original-Bild mit meinem eingelesenen vergleiche, dann stimmen die Zeilen net. Das ist aber seltsamerweise nur bei bestimmten Bildern. Ich hab mir gedacht es könnte vielleicht an meiner Art die Bilder einzulesen liegen. Daher nun mal der Quellcode:
PHP:
$imageFile = file("bild.gif");
PHP:
$imageFile = join('',$imageFile);
'Kann hier vielleicht der Fehler liegen?
PHP:
$imageFile = addslashes($imageFile);

Irgendwas scheint da wohl nicht mit den Zeilenumbrüchen zu stimmen. Kann ich hier "join" vielleicht gar nicht verwenden und wenn nein was dann?
 
Ich würde Bilder nicht mit file() einlesen.. Ich weiß nichtmal ob Bilder Zeilenumbrüche haben.
So sollte es aber auf jeden Fall gehen (hoffe ich ;)):
PHP:
$bild = "bild.gif";
$fp = fopen($bild,"r");
$bildgroesze = filesize($bild);
$bildinfo = fread($fp,$bildgroesze);
Außerdem könnte das Addslashes alles kaputt machen :)
In Bildern stehen die Informationen ja nicht wie in einer Textdatei (kommt zumindest auf das Format an, gibt auch welche da steht das so drin. Bei .svg Grafiken z.B. aber das sind Vektorgrafiken und keine pixelbasierten Grafiken wie .gif/.jpg/.png)
 
Zuletzt bearbeitet:
Da die Daten aber in die DB reinsollen, ist addslashes sinnvoll, sonst bekommst du einen SQL-Fehler. Wichtig ist aber, das magic_quotes ausgeschaltet ist, sonst wird doppelt escaped und somit bleibt ein \ übrig.
Wenn du aber nur einmal escapest, sind die \ in der DB nicht mehr vorhanden.

EDIT: @snuu: schtimmt.... ;)
 
Zuletzt bearbeitet:
Da muss ich Dir leider widersprechen:
Anmerkung: Zusätzlich kann mode der Buchstabe 'b' hinzugefügt werden, der die Behandlung von Binärdateien erlaubt. Dies ist nur auf Systemen sinnvoll, welche zwischen Binär- und Text-Dateien unterscheiden (z.B. Windows. Ist bei Unix sinnlos). Wenn das Feature nicht gebraucht wird, wird es einfach ignoriert. Sie sollten den 'b' Flag verwenden, um Ihre Skripte portabler zu machen.

snuu
 
Also das Problem scheint wohl wirtklich die addslashes()-Methode zu sein. Gibts da noch was anderes? Hab schon mal addcslashes ausprobiert, aber des liefert mir auch nix wirklich gutes....
 
Also ich verwende [phpf]mysql_escape_string[/phpf] bzw. den Nachfolger der aber afaik das (fast) gleiche macht: [phpf] mysql_real_escape_string[/phpf].
Darf allerdings nur in einem Sql Query stehen und auch hier solltest du überprüfen ob magic_quotes exiistiert zum Beispiel mit einer Funktion die den mit mysql_escape_string oder addslahes modifizierten String nur zurückgibt ,wenn magic_quotes existiert ansonsten eben den eingabe String ohne Maskierung zurückgeben :)
 
Also danke für eure Hilfe, aber es war an den ganzen Dingen nicht gelegen. Hatte den falschen Datentyp. Nen TinyBlob. :-(( Hat jemand so nebenbei gefragt von euch eine Ahnung wie viele Byte das Teil aufnehmen kann?
 
Nur mal ganz vorsichtig gefragt: Warum Bilder in die Datenbank? Die effektivste Datenbank für Bilder ist immer noch das Dateisystem :-)
 
Original geschrieben von Neurodeamon
Nur mal ganz vorsichtig gefragt: Warum Bilder in die Datenbank? Die effektivste Datenbank für Bilder ist immer noch das Dateisystem :-)
Wenn du Kommentare zu den Bildern schreiben möchtest, ist das sinnvoll.
 
Zurück