Bekijk Volledige Versie : [php]plaatje uit database in html (header probleem)
Hallo NIWS-S,
Ik ben bezig met een systeem dat een plaatje in een mysql database opslaat.
Opzich gaat dit prima, ook het opvragen lukt.
Echter doordat de headers meegegeven worden, kan ik dit plaatje niet in de
html zetten.
Hoe kan ik dit goed krijgen? Ik had ergens iets gevonden van output
buffering, echter dat snap ik niet helemaal.
Ik kan het wel doen met <img src="plaatjesscript.php?id=1"> echter dit lijkt
mij niet de beste oplossing. omdat er dan een 2e script wordt aangeroepen.
Hieronder volgt het door mij gebruikte script.
<?
include('config.inc.php');
include('dbconnect.php');
$id=$_GET["id"];
$query = mysql_query("select filename, filetype, filesize, filecontents from
images where ID='$id'" );
$result=mysql_fetch_array($query);
$fileName=$result[filename];
$fileType = $result[filetype];
$fileSize = $result[filesize];
$fileContents = $result[filecontents];
header("Content-type: $fileType");
header("Content-length: $fileSize");
header("Content-Disposition: $fileType; filename=$fileName");
header("Content-Description: PHP Generated Data");
echo $fileContents;
?>
Indien jullie mij kunnen helpen zou ik dat zeer op prijs stellen. (ook
verbeteringen in mijn script worden graag ontvangen.)
Groeten,
Sven
--spatie
Het streepje wordt een puntje, voor een prive bericht.
Rene Pijlman
02/01/04, 18:30
Sven:
>Echter doordat de headers meegegeven worden, kan ik dit plaatje niet in de
>html zetten.
>Hoe kan ik dit goed krijgen?
Output buffering.
>Ik had ergens iets gevonden van output buffering, echter dat snap ik niet helemaal.
Wat heb je waar gevonden en wat was er onduidelijk aan?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Rene Pijlman wrote:
> Sven:
>> Echter doordat de headers meegegeven worden, kan ik dit plaatje niet
>> in de
>> html zetten.
>> Hoe kan ik dit goed krijgen?
>
> Output buffering.
Dan had ik het toch goed :)
>> Ik had ergens iets gevonden van output buffering, echter dat snap ik
>> niet helemaal.
>
> Wat heb je waar gevonden en wat was er onduidelijk aan?
Op php.net ik heb gevonden dat hiervoor de functie ob_start() wordt
gebruikt, echter ik snap het gebruik hiervan niet precies en wat het doet
ook niet.
Ik hoop dat jullie mij kunnen helpen.
Groeten,
Sven
--
Het streepje wordt een puntje, voor een prive bericht.
Rene Pijlman
02/01/04, 19:00
Sven:
>Op php.net ik heb gevonden dat hiervoor de functie ob_start() wordt
>gebruikt, echter ik snap het gebruik hiervan niet precies en wat het doet
>ook niet.
Eventuele output, anders dan headers, wordt gebufferd, zodat de output pas
naar de webserver wordt gestuurd nadat alle headers zijn gestuurd.
Het is zo simpel als voordat de eerste header gestuurd wordt ob_start()
aanroepen, en nadat alle headers gestuurd zijn ob_end_flush(). Na
ob_start() kun je gewone output produceren, ongeacht de volgorde t.o.v. de
headers.
Meer valt er eigenlijk niet over te zeggen.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Daniel Tryba
02/01/04, 20:00
Sven <sven@enygma-demon.nl> wrote:
> Hoe kan ik dit goed krijgen? Ik had ergens iets gevonden van output
> buffering, echter dat snap ik niet helemaal.
> Ik kan het wel doen met <img src="plaatjesscript.php?id=1"> echter dit lijkt
> mij niet de beste oplossing. omdat er dan een 2e script wordt aangeroepen.
AFAIK is dat de enige oplossing. Je kan IMHO plaatjes niet embedden in
html.
--
Daniel Tryba
Ronald Klip
02/01/04, 22:45
Daniel Tryba schreef:
>
> Je kan IMHO plaatjes niet embedden in html.
Ironisch eigenlijk:
* via e-mail kun je allerlei bestandsformaten in 1 keer verzenden - tot
ergernis van velen
* op het multimediale WWW kan dat niet (1), terwijl er misschien wel
nuttige toepassingen voor te bedenken zijn.
Zal daar een gedachte achter zitten, of is het toevallig zo gekomen?
(1) embedded script en css uitgezonderd. En Flash, maar dat is weer een
ander verhaal.
--
groet, Ronald
Daniel Tryba
02/01/04, 23:00
Ronald Klip <nieuws@bladibla.njet.invalid> wrote:
>> Je kan IMHO plaatjes niet embedden in html.
>
> Ironisch eigenlijk:
> * via e-mail kun je allerlei bestandsformaten in 1 keer verzenden - tot
> ergernis van velen
> * op het multimediale WWW kan dat niet (1), terwijl er misschien wel
> nuttige toepassingen voor te bedenken zijn.
>
> Zal daar een gedachte achter zitten, of is het toevallig zo gekomen?
Niet verder vertellen maar het kan wel: rfc 2397
(http://www.ietf.org/rfc/rfc2397.txt)
Getest met Mozilla 1.5 en Firebird 0.7 krijg je een plaatje te zien op
bv http://selfaktuell.teamone.de/artikel/grafik/inline-images/index.htm
Met Opera 7.23 gaat het een beetje mis (zie maar 1/5 van het plaatje).
Maar ik zie het nut er eigenlijk niet echt van in. Een (html)browser
gebruik je (bijna) alleen als "online" bent. email vindt eigenlijk
alleen maar offline plaats, althans vrijwel alle content is
"all-in-one". Tenminste dat is mijn persoonlijke ervaring....
Dit soort url encoding wordt overigens in vele formaten (anders dan
email) allang toegepast (bv vcards en ldap).
--
Daniel Tryba
Ronald Klip
02/01/04, 23:45
Daniel Tryba schreef:
> >> Je kan IMHO plaatjes niet embedden in html.
> >
> Niet verder vertellen maar het kan wel: rfc 2397
> (http://www.ietf.org/rfc/rfc2397.txt)
>
> Getest met Mozilla 1.5 en Firebird 0.7 krijg je een plaatje te zien op
> bv http://selfaktuell.teamone.de/artikel/grafik/inline-images/index.htm
Geinig!
> Met Opera 7.23 gaat het een beetje mis (zie maar 1/5 van het plaatje).
"aber leider nicht beim MS Internet Explorer 4.x - 5.x."
Ook niet in IE6: rood kruisje. Misschien wel met Outlook Express, maar
die heb ik niet bij de hand.
> Maar ik zie het nut er eigenlijk niet echt van in. Een (html)browser
> gebruik je (bijna) alleen als "online" bent. email vindt eigenlijk
> alleen maar offline plaats, althans vrijwel alle content is
> "all-in-one". Tenminste dat is mijn persoonlijke ervaring....
Op die Duitse site wordt het client-side genereren van afbeeldingen
geopperd. Je zou misschien zelfs Flash-achtige dingen kunnen bouwen, met
script en een vector-images-formaat. Maar dat is een wat omslachtige
werkwijze.
--
groet, Ronald