PHP und MS SQL - Blobs/Images

Bash, Shell, PHP, Python, Perl, CGI
mkss
Posts: 12
Joined: 2004-12-23 01:22

PHP und MS SQL - Blobs/Images

Post by mkss » 2005-01-03 16:26

Hallo,
ich weiss nicht, ob ich damit hier OT bin, aber ich versuchs trotzdem mal.

Ich habe ein PHP-Script, welches aus einer MS-SQL-DB und ADODB ein Blobfeld auslesen und als z.B. JPEG-Grafik darstellen soll. Vom Prinzip her funktioniert schon alles, nur dass ich keine gültige JPEG-Grafik aus dem Blobfeld bekomme. Abgespeichert wird die Grafik jedoch nicht in PHP, sondern in einer Anwendung (auf die ich aber auch Zugriff habe).
Egal, ob ich Rohdaten (=binary) speichere oder base64-codiert, es scheint als würden immer irgendwelche Daten fehlen.
Auch das Einlesen des Blobfeldes (als String) und die anschliessende Verwendung in imagecreatefromstring() wird mir nur mit Fehlermeldungen quittiert.
Das Feld ist vom Typ 'image' in einer MS SQL 2K-Datenbank. Für mySQL gibts ja sehr viele Beispiele, aber ich habe keines für MS-SQL und ADODB gefunden.

Hat jemand bereits mit dieser Konstellation so etwas zustande gebracht? Ich verzweifle noch fast ... bin für jegliche Hilfe sehr dankbar!

(Ne gute Quelle im I-Net wäre auch ganz ok ...)

TIA,
Michael

mkss
Posts: 12
Joined: 2004-12-23 01:22

Re: PHP und MS SQL - Blobs/Images

Post by mkss » 2005-01-04 14:03

Ich habe nach stundenlanger Suche die Lösung selbst gefunden - vielleicht hilft sie jemandem anderen irgendwann mal:

In der Datei PHP.INI, Sektion [mssql]:

mssql.textlimit = <hoher wert>
mssql.textsize = <hoher wert>

Anscheinend reagieren auf diesen Wert sowohl Felder des Typs 'text' als auch des Typs 'image'.

Trotzdem danke...
Michael

outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: PHP und MS SQL - Blobs/Images

Post by outofbound » 2005-01-04 14:21

Hi,

vielleicht besser: JPGS im Filesystem ablegen und nur den Dateinamen in der MySQL ablegen,
spart unheimlich Resourcen. Um den "Zugriff" auf die Dateien direkt zu verhindern, kannst du
sie ja immer noch ausserhalb des DocRoot speichern und über ein PHP- Script ausliefern.

Blobs sind eigentlich nur sinnvoll, wenn du Replikation o.ä. verwendest, da du dann alles hin und
her replizieren kannst.

Gruss,

Out

mkss
Posts: 12
Joined: 2004-12-23 01:22

Lösung und neues 'Problem'

Post by mkss » 2005-01-04 16:09

Hi Out,

danke für den Tipp, daran hatte ich auch schon gedacht. Leider sind die Vorgaben eben wegen geplanter Replikation und ähnlichen Dingen auf Blobs ausgerichtet. Aber es geht ja jetzt :-)

Ein Problem habe ich leider noch, vielleicht bist DU da ja auch ein wenig Spezialist:

Ich habe ein PHP-Script, welches mir genau diese Aufgaben erledigt. Aufgerufen wird das dann über IMG SRC=phpscript?parameter, was auch funktioniert, solange ich den Netscape 7 benutze. Nehme ich den IE, wird mir erst einmal ein Rechteck mit Kreuz dargestellt und beim Rechtsklicken mit 'Grafik anzeigen' das korrekte Bild. :-( Grrr... und ich muss den IE vorziehen, da Netscape bei CSS Schwierigkeiten macht.
Ein Kollege meinte, beim Firefox geht es 'manchmal', nicht immer. Ich habe bereits alle Cache-Control-Sachen mit header() versucht, jedoch ohne Erfolg. Das Ganze muss zwar zunächst im Intranet funzen, aber (später) natürlich auch über Proxy.

Hast Du oder jemand anderes eine Idee, an was das nun liegen könnte? Es ist übrigens egal, ob ich mit dem Script mein Bild per imagecreatefromjpeg() oder per Blobfeld lade. Das Bild wird nur noch ein wenig verkleinert und soll dann angezeigt werden.

TIA,
Michael

myname
Posts: 96
Joined: 2003-10-31 11:12

Re: PHP und MS SQL - Blobs/Images

Post by myname » 2005-01-05 20:10

Hast Du den header richtig gesetzt?

Folgender Code Schnipsel als Anregung

Code: Select all

<?php
   Header("Content-type: image/gif");
   $im = imagecreatefromgif('../images/layout/menue_feld.gif');
.....
...
  ?>


mkss
Posts: 12
Joined: 2004-12-23 01:22

Re: PHP und MS SQL - Blobs/Images

Post by mkss » 2005-01-05 21:30

Danke für den Tipp - nach stundenlangem Kopfzerbrechen bin ich drauf gekommen. Die Lösung liegt - wie fast immer - total woanders:

W2K mit IIS5 und PHP 4.3.? lief als CGI (was bisher nie Probleme machte). Eine Umstellung auf ISAPI brachte den Erfolg. Wieso, weiss ich nicht ... vermutlich ein Timing-Problem oder ähnliches. Aber falls jemand mal dasselbe Problem haben sollte ... :-)

Danke euch allen!!

Micha