Oprettet lør. d. 22. maj 2010 kl. 16:04:23

deamill
deamill (15.715 point. Point ude: 0)

Billeder i MYSSQL

Hejsa,

Er det muligt at gemme billeder i en MYSQL database?

Hvis ja, hvordan gør man det så?

/Kenneth

Skrevet lør. d. 22. maj 2010 kl. 16:06:38| #1

arne_v
arne_v (1.005.623 point)
Ja.

Vælg felt type BLOB/MEDIUMBLOB/LONGBLOB alt efter hvor store billeder du har brug for at gemme.

Og å indsætter du med helt normal INSERT og brug af parameters/prepared statement.

Hvilket programmering sprog bruger du?

Skrevet lør. d. 22. maj 2010 kl. 16:18:56| #2

deamill
deamill (15.715 point)
Hej, jeg bruger ASP

Skrevet lør. d. 22. maj 2010 kl. 16:24:07| #3

arne_v
arne_v (1.005.623 point)
I ASP hedder det parameters.

Skrevet lør. d. 22. maj 2010 kl. 16:31:19| #4

deamill
deamill (15.715 point)
Ok, vil det sige at jeg i min insert bare peger på den lokale sti til filen, eller har jeg misforstået dig?

Skrevet lør. d. 22. maj 2010 kl. 16:36:29| #5

arne_v
arne_v (1.005.623 point)
Ja.

Du læser filen ind i et byte array og sætter det som value for en parameter.

Skrevet lør. d. 22. maj 2010 kl. 16:51:41| #6

deamill
deamill (15.715 point)
ok, det må jeg lige prøve at kigge på så :-)

Skrevet lør. d. 22. maj 2010 kl. 23:12:38| #7

deamill
deamill (15.715 point)
Ja, det fik jeg ikke meget ud af :p Kan du evt. linke til et sted hvor jeg kan se et simpelt eksempel på noget ASP kode som kan gøre det?

Skrevet søn. d. 23. maj 2010 kl. 04:21:07| #8

arne_v
arne_v (1.005.623 point)
Insert:


<%
' CREATE TABLE demo (id INTEGER NOT NULL PRIMARY KEY, pic BLOB);
adInteger = 3
adVarBinary = 204
adParamInput = 1
adTypeBinary = 1
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Option=16834;Database=Test;"
Set stm = Server.CreateObject("ADODB.Stream")
stm.Type = adTypeBinary
stm.Open
stm.LoadFromFile Server.MapPath("y.jpg")
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = con
cmd.CommandText = "INSERT INTO demo VALUES(?,?)"
cmd.Parameters.Append(cmd.CreateParameter("@id", adInteger, adParamInput))
cmd.Parameters.Append(cmd.CreateParameter("@pic", adVarBinary, adParamInput, 65535))
cmd.Parameters("@id") = 1
cmd.Parameters("@pic") = stm.Read
cmd.Execute
Set cmd = Nothing
Set stm = Nothing
Set con = Nothing
%>
OK


Select:


<%
adInteger = 3
adParamInput = 1
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Option=16834;Database=Test;"
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = con
cmd.CommandText = "SELECT pic FROM demo Test WHERE id = ?"
cmd.Parameters.Append(cmd.CreateParameter("@id", adInteger, adParamInput))
cmd.Parameters("@id") = 1
Set rs = cmd.Execute
Response.Clear
Response.ContentType = "image/jpeg"
Response.BinaryWrite rs("pic")
Response.End
Set rs = Nothing
Set cmd = Nothing
Set con = Nothing
%>

Skrevet søn. d. 23. maj 2010 kl. 04:21:30| #9

arne_v
arne_v (1.005.623 point)
http://dev.mysql.com/ (...) bruger dog en lidt anden teknik!

Skrevet søn. d. 23. maj 2010 kl. 17:14:18| #10

deamill
deamill (15.715 point)
Hej Arne_v,

Jeg vil lige høre... Den her sætning:

stm.LoadFromFile Server.MapPath("y.jpg")

Er det en fil på min lokale harddisk, eller er det på serveren?

Meningen er jo, at jeg skal kunne oploade en lokal fil fra min pc til databasen på nettet.

/Kenneth

Skrevet søn. d. 23. maj 2010 kl. 19:06:16| #11

arne_v
arne_v (1.005.623 point)
Den bruger en fil på serveren.

Hvis det er en upload funktionalitet du er ved at lave så skal du naturligvis hente fra POST request og ikke fra serverens fil system.

Skrevet søn. d. 23. maj 2010 kl. 21:11:51| #12

deamill
deamill (15.715 point)
Det tænnkte jeg nok :-) Du skulle vel aldrig have et link til et eksempel som viser det?

Når jeg søger, så syntes jeg kun jeg finder eksempler ala det du giver ovenfor :-/

Skrevet man. d. 24. maj 2010 kl. 17:55:02| #13

arne_v
arne_v (1.005.623 point)
Jeg kan godt proeve og bixe noget.

Skrevet tir. d. 25. maj 2010 kl. 02:56:28| #14

arne_v
arne_v (1.005.623 point)
Hm.

Er det en rå POST af en fil eller er det en FORM med INPUT TYPE=FILE der skal uploades?

Skrevet ons. d. 26. maj 2010 kl. 09:11:43| #15

danco
danco (10.573 point)
Jeg tillader mig lige at snylte på dette spørgsmål.

er dette den optimale måde at gøre det på ? altså gemme som BLOB. Jeg mener bare, fylder det ikke meget i databasen?
Og derudover er det vel et problem at det tager lang tid når man skal hente ud.

Skrevet ons. d. 26. maj 2010 kl. 16:10:37| #16

arne_v
arne_v (1.005.623 point)
Det spoergsmaal er et af mine yndlings emner!

:-)

Tilbage med Access 95/Windows/Pentium+16GB RAM+300MB disk var det totalt draebende for databasen at gemme filer i den.

Tiderne er anderledes idag.

Mindre filer (KB filer) er ingenting data stoerrelses maessigt.

Og det er faktisk en ret dyr operation at aabne en fil.

Hvis du lader web serveren streame filerne ud direkte, saa er det nok minimalt hurtigere. Men skal filerne streames ud af din app for at integrere med applikationen security, saa vil databasen vaere lige saa hurtig.

Og det er nu engang nemmere at administere hvis alt er i databsen fremfor at have refs i databasen og filer drysset ud paa disken.

Bedste argument for eksterne filer er danske billig web hotellers politik med at tilbyde 10 MB database plads og 1 GB filplads.

Men i den lidt tungere ende er det helt normalt at gemme filer i databaser. Der er meget serioese produkter fra Oracle og Microsoft som baserer sig paa den loesning.

Skrevet søn. d. 13. juni 2010 kl. 04:01:24| #17

arne_v
arne_v (1.005.623 point)
deamill?

Skrevet tor. d. 02. september 2010 kl. 07:54:12| #18

deamill
deamill (15.715 point)
hej arne_v sorry, du må gerne lige svare :)

Skrevet tor. d. 02. september 2010 kl. 15:26:18| #19


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

søgning i datebase ?

Oprettet den 10. februar 2012 kl. 19.00
JobJog giver 60 point for svar | Giv et svar »

num_rows = 1, selvom der er 0 rækker?

Oprettet den 9. februar 2012 kl. 00.17
stigma giver 60 point for svar | Giv et svar »

Stop spam!

Oprettet den 6. februar 2012 kl. 20.45
herberth giver 30 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger