PDF aus mySQL (Longblob) auslesen?

Ben Ben

Erfahrenes Mitglied
Hi Folks,

ich habe ein Problem. Und zwar habe ich ein PDF-Dokument in dein Binary Feld (LONGBLOB) der mySQL Datenbank gespeichert. Soweit kein Problem.
Nur beim Auslesen bekomme ich Probleme, denn er Startet zwar Acrobat jedoch kann dieser nix anzeigen. Nach etwas googlen scheint das aber alleine ein Problem in Bezug auf pdf-Dokumente zu sein, denn bei Grafiken etc macht das kein Problem.

Einlesen tue ich die Datei folgendermassen

PHP:
$storedata = addslashes( fread($fh, filesize($_FILES[$val['name_int']]['tmp_name'])) );

// anstatt addslashes habe ich auch schon base64_encode verwendet

und das Auslesen sieht dann so aus
PHP:
  header("HTTP/1.1 200 OK"); 
  header("Content-type: application/pdf"); 
  echo $filedata['FILE'];

in $filedata['FILE'] stehen ben die Binärdatan drin. Da ich dachte es könnte ein Problem beim addslashes auftreten habe ich das ganze eben mit base64_encode und beim aulesen dann mit echo base64_decode($filedata['FILE']) gemacht was aber genauso wenig erfolgt gebracht hat.
Zum testen mit einer Grafik etc habe ich dann halt mal die Mime-Types dem Dokument entsprechend geändert und es ging, nur eben bei PDFs nicht und ich wüsste nicht woran das liegen kann.
Weiss jemand weiter?

T.I.A
Ben
 
Sicher, dass du beim Ausgeben der Binärdaten überhaupt sowas wie addslashes machen musst? Dadurch veränderst du doch die Binärdaten.
 
das mit den addslashes hatte ich auch vorher nicht, sonder nur base64.
Dachte ich mir auch, dass dies die Binärdaten verändert, aber das war
so in einem Quelltextbeispiel das ich bei google gefunden habe, weil ich ja mit meinem base64_enode und _decode nicht weiterkam.
Aber irgendwas muss ich mit den Daten machen sonst gibts einen SQL-Fehler....
 
so habe den Fehler gefunden. Der Haken war, das magic_quotes auf on stand. Dadurch wurden alles mit addslashes escapten nicht Stringverträglichen Zeichen nochmal escaped und standen somit dann auch in der Datenbank.
Nach dem Ausschalten war das kein Problem.

@TIM: Jaein, sogesehen werden es erstmal mehr Zeichen im Binärcode, jedoch werden diese ja nicht gespeichert sondern dienen nur dazu Sonderzeichen zu escapen.
Das fällt z.B. auf wenn du den String 'test' so in der Datenbank speicherst. mit einem addslashes drum steht das dann auch so in der Datenbank. Ist aber zudem noch magic_quotes an, steht dann pltzöich \' test\' in der Datenbank. und wenn ich dann das ganze als \'test\' (z.B. in einem Änderungstextfeld) wieder mit addslashes oder auch mysql_escape_string bearbeiten würde, hätte ich dann \\'test\\' in der Datenbank...
 
Zurück