10. november 2008 - 10:41Der er
34 kommentarer og 1 løsning
Vise jpeg fra blob.
Jeg har en side hvor jeg ønsker at gemme jpeg dokumenter. De er gewmt i databsen men når jeg viser dem, kommer det kun volapyk ud.
Jeg har lavet følgende: $sql = "select id, date_format(Dato, '%e/%c-%y') as Datoen, Dokument from BGnyt Order By ID desc Limit 0, 1";
Det er Dokument som er blob med jpg gemt i databsen. Med denne kode header('Content-Type: image/jpeg'); header('Content-Disposition: inline; filename=file.jpg');
Hvad er det jeg gør forkert/mangler? og som bonus spørgsmål, hvad nu hvis jeg vil gemme flere filtyper som dokument f.eks. word dokumenter og pdf filer? (Denne giver jeg gerne ekstra point for).
header('Content-Type: image/jpeg'); header('Content-Disposition: inline; filename=file.jpg'); $sql = "select id, date_format(Dato, '%e/%c-%y') as Datoen, Dokument from BGnyt Order By ID desc Limit 0, 1"; $res = mysql_query($sql) or die (mysql_error()); $row = mysql_fetch_assoc($res); print $row["Dokument"];
"Det virker ikke." - på hvilken måde, og med hvilken kode? mysql_fetch_assoc er en indbygget funktion, men der mangler selvfølgelig at oprette forbindelse til server og database. Det er tilladt at tænke selv ;) Og så kan jeg ikke se hvad du skal bruge datoen til??
Hej olebole. Ja jeg har kodet php mysql før. Men ikke med filer vedhæftet. Hvis jeg kører med en echo $dokument; og uploader et word dokument kommer det også fint ud. Jeg kan godt se det ikke virker med jpg'er og kæmper for at finde ud af hvordan det virker. Grunden til datoen skal med er at det er til scannede nyhedsbreve fra en børnehave og man skal kunne se hvad dato det er fra. Bla. fordi der også skal laves et arkiv med gamle data. Jeg får datoen ud, men ikke jpg'en.
Jeg har ikke uploadet hele min kode, da den fylder en del.
"Hvis jeg kører med en echo $dokument; og uploader et word dokument kommer det også fint ud." >> Det må du ikke forvente, andre skal kunne forstå, hvad du mener med =)
Da vi ikke ved, hvad du gør, er det ret umuligt at foreslå, hvad du skal gøre i stedet
Nu var spørgsmålet jo ikke hvor meget php jeg har kodet, og hvis jeg var ekspert havde jeg nok heller ikke behov for at spørge om hjælp. Det meste jeg har lavet har været med flad tekst og tal, og her har jeg kunnet klare mig med de simple funktioner som $sql = select "......"; Kalde databsen og få indput og så en echo variabel$ Dette virker ikke med jpg images og jeg spørger derfor hvordan det kommer til at virke. Jeg kan se ideen i dit svar men får nu blot datoen, men ikke noget billede.
Hvis jeg kigger i kildekoden for siden når den vises er der heller intet billed objekt i linien efter datoen som jeg forventer.
"i linien efter datoen" ??? Det er ikke noget af den kode her i spørgsmålet, der udskriver datoen. Så er vi tilbage til mit spørgsmål fra før: med hvilken kode.
Jeg er dybest set ligeglad, men hvis du ikke er, og vil have løst dit problem, må du komme med flere oplysninger.
header("Content-Type: image/jpeg"); header("Content-Disposition: inline; filename=file.jpg"); $sql = "select id, date_format(Dato, '%e/%c-%y') as Datoen, Dokument from BGnyt Order By ID desc Limit 0, 1"; $taeller_sql = "select count(*) as antal from BGnyt";
Den laver en connect til databasen. Så laver den en sql query defineret i $sql ($sql = "select id, date_format(Dato, '%e/%c-%y') as Datoen, Dokument from BGnyt Order By ID desc Limit 0, 1") Samt en optælling af hvor mange entrys der er i Databasen ($taeller_sql = "select count(*) as antal from BGnyt";) Til sidst lukker den databasen igen.
Det skyldes at senere skal bruge alle entrys til en oversigt over filer/billeder i en navigagtions menu, men her skal jeg kun bruge Datoen og det fungerer fint.
Hej igen. Nu har jeg lavet en simpel test side med denne kode. Alt den skal gøre er at finde seneste entry i databasen og udskrive Dato samt billede. Mit output er datoen. Der ligger et jpg billede gemt som blob i seneste database entry, som i øvrigt er den eneste lige nu.
# # Vi henter to ting ud af MySQL - først og fremmest alle de indlæg vi skal kigge på # men også en hurtig optælling af, hvor mange indlæg der er ialt. Det sidste skal vi # bruge når vi bygger "frem"- og "tilbage"-links. # # Der er ingen grund til at åbne databasen endnu - vi skal først lige have bygget # de to forespørgsler. #
header("Content-Type: image/jpeg"); header("Content-Disposition: inline; filename=file.jpg"); $sql = "select id, date_format(Dato, '%e/%c-%y') as Datoen, Dokument from BGnyt Order By ID desc Limit 0, 1";
# # Nu åbner vi databasen, hiver informationerne ud og lukker med det samme igen. # Det er god skik at en forbindelse til database ikke er åben længere end højst nødvendigt. # # Abstraktionerne fra mysql-funktioner.php sørger for alt det grove arbejde og fejlhåndtering - dejligt. #
# # Vi henter to ting ud af MySQL - først og fremmest alle de indlæg vi skal kigge på # men også en hurtig optælling af, hvor mange indlæg der er ialt. Det sidste skal vi # bruge når vi bygger "frem"- og "tilbage"-links. # # Der er ingen grund til at åbne databasen endnu - vi skal først lige have bygget # de to forespørgsler. #
header("Content-Type: image/jpeg"); header("Content-Disposition: inline; filename=file.jpg"); $sql = "select id, date_format(Dato, '%e/%c-%y') as Datoen, Dokument from BGnyt Order By ID desc Limit 0, 1";
# # Nu åbner vi databasen, hiver informationerne ud og lukker med det samme igen. # Det er god skik at en forbindelse til database ikke er åben længere end højst nødvendigt. # # Abstraktionerne fra mysql-funktioner.php sørger for alt det grove arbejde og fejlhåndtering - dejligt. #
Men du skal skrive billedet ud, ikke datoen. Du kan ikke blande tekst (og html) og så et billede. Drop linien med print $row["Datoen"]; og se hvad der sker. Og hvis ikke det virker, så skal vi lige have et link, ik'?
# # Vi henter to ting ud af MySQL - først og fremmest alle de indlæg vi skal kigge på # men også en hurtig optælling af, hvor mange indlæg der er ialt. Det sidste skal vi # bruge når vi bygger "frem"- og "tilbage"-links. # # Der er ingen grund til at åbne databasen endnu - vi skal først lige have bygget # de to forespørgsler. #
header("Content-Type: image/jpeg"); header("Content-Disposition: inline; filename=file.jpg"); $sql = "select id, date_format(Dato, '%e/%c-%y') as Datoen, Dokument from BGnyt Order By ID desc Limit 0, 1";
# # Nu åbner vi databasen, hiver informationerne ud og lukker med det samme igen. # Det er god skik at en forbindelse til database ikke er åben længere end højst nødvendigt. # # Abstraktionerne fra mysql-funktioner.php sørger for alt det grove arbejde og fejlhåndtering - dejligt. #
Koden kommer her: <?php /* * Titel : MySQL abstraktion * Version : $Id: mysql-funktioner.phps,v 1.1 2001/07/18 21:29:13 webclaus Exp $ * Kodet af : Villy Thomsen (villyft@webcafe.dk) * Placering : http://webcafe.dk/php/artikler/204/mysql_funktioner * Formål : en abstraktion over the MySQL funktionerne i PHP, som * klarer alle de "trælse" ting, så som at åbne/lukke * forbindelser og håndtere fejl fra MYSQL. */
Det kan man. Men det er ikke synderlig smart at smide store ting i felter i en database. Selv om man kan. Jeg vil godt vædde en bøjet 25-øre på at one.com kommer efter dig for overtrædelse af deres "fair" use policy. Billeder, pdf-filer etc skal gemmes som almindelige filer.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.