PDFs in der MySQL-DB ablegen und aus dieser wieder anzeigen

  • #1
M

Michael_B

Bekanntes Mitglied
Themenersteller
Dabei seit
21.09.2002
Beiträge
860
Reaktionspunkte
0
Ort
Köln
Hallo...

ich habe den Auftrag bekommen, einen ganzen Batzen PDF-Dateien als BLOB in eine MySQL-Datenbank zu schreiben und diese dann per Skript auf der Webseite anzeigen zu lassen... Jetzt steh ich voll auf dem Schlauch. Hab auch gegoogelt und die Forenhilfe genutzt, aber bisher nur Sachen zum Thema PDFs per PHP erstellen gefunden (also phplib und fpdf).
Die PDF-Dateien sind ja bereits vorhanden, sollen nun aber in die DB transferiert werden. Zu jedem Produkt gibt es dann auch so ein PDF. Auf der Produktseite soll dann also ein Link stehen, mit dem man sich dann die PDF in einem anderen Browserfenster angucken können soll...

Jemand eine Ahnung wie ich das angehen soll? Wäre sehr dankbar für jeden Tipp...

M.
 
  • #2
Hi

PDF Datei binary safe als String einlesen, diesen mit addslashes() in die Datenbank in das BLOB Feld eintragen.

Dann hast du ein php Skript was die pdfs wieder ausliest: das setzt per header() den entsprechenden Content Type und schreibt dann einfach den pdf inhalt raus.
Zum Anzeigen des PDFs musst du also auf das PHP Skript verlinken.

Es gibt dazu einige Anleitungen wo das mit Bildern genutzt wird, eventuell findest du da was.

Gruß, Michael
 
  • #3
Och menno, jetzt bin ich schon wieder zu langsam  :'(
 
  • #4
Die einfachste Lösung währe allerdings die vorhandenen *.pdf auf dem Webserver in einem/mehreren Verzeichnis/en abzulegen und nur den Link in der DB zu speichern.
Ist wahrscheinlich die eleganteste und schnellste Lösung.

Außerdem müßte so nicht jedes *.pdf bei einem Aufruf dynamisch generriert werden, was den Webserver- und die DB-Performance belasten würde.


gruss conny
 
  • #5
Erstmal vielen Dank an alle...
PCDReitz schrieb:
PDF Datei binary safe als String einlesen, diesen mit addslashes() in die Datenbank in das BLOB Feld eintragen.
binary safe? könntest du mal eine Anweisung posten. Hab davon nämlich noch nie was gehört :)

Conny schrieb:
Die einfachste Lösung währe allerdings die vorhandenen *.pdf auf dem Webserver in einem/mehreren Verzeichnis/en abzulegen und nur den Link in der DB zu speichern.
Ich finds auch besser so. So haben wirs atm auch. Aber Cheffe will das jetzt anders haben... ^^

CU
M.
 
  • #6
Hi

Windows offers a text-mode translation flag ('t') which will transparently translate \n to \r\n when working with the file. In contrast, you can also use->b' to force binary mode, which will not translate your data. To use these flags, specify either->b' or->t' as the last character of the mode parameter.

Gruß, Michael
 
  • #7
  • #8
Ähhh jetzt bin ich total verwirrt... Soll ich die Dateien jetzt im->t'- oder im->b'-Mode öffnen bzw. auslesen? Wir arbeiten definitiv mit IIS, also einem Windows-Server. Daher sollte ich dann hier wohl etwas besser aufpassen... Denke aber, dass der->b'-Mode hier angebracht ist, weil es ja ein PDF ist... ???

Summa summarum würde ich nun folgendermaßen vorgehen:

Code:
$pdf = fopen(datei.pdf, rb);
$pdf_data = fread($pdf, filesize(datei.pdf));

$pdf_res = mysql_query(INSERT INTO tabelle SET [...], pdf='.addslashes($pdf_data).');

und beim Anzeigen der PDF aus der DB heraus

Code:
<? php

$pdf_res = mysql_query(SELECT pdf FROM tabelle WHERE [...]);
$pdf_tmp = mysql_fetch_array($pdf_res);
$pdf_data = $pdf_tmp[pdf];

$header.= Content-Type: application/pdf\r\n;
Header($header);
echo $pdf_data;
exit;
?>

Kann das bisher leider nicht ausprobieren, da ich nicht auf der Arbeit bin, werde es aber gleich morgen mal versuchen... Könnt ihr denn schon irgendwelche Fehler oder schlechte Programmierung erkennen? Gibts noch wissenswerte Tipps dazu?

Vielen vielen vielen Dank schonmal für eure Hilfe *verbeug*
M.
 
  • #9
Super... Hat alles funktioniert... Vielen Dank !!!!!!
M.
 
Thema:

PDFs in der MySQL-DB ablegen und aus dieser wieder anzeigen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben