16. maj 2004 - 14:39Der er
43 kommentarer og 3 løsninger
Hente billed fra Access database
Hej Eksperter
Jeg har fundet en stump kode på nettet som skulle kunne hente et billed ude fra en access database. Men jeg kan ikke få det til at virke. Jeg afvikler det på en IIS, og det eneste jeg ser er billed ikonet med et lille rødt kryds. I access database har jeg lagt billedet ind som et OLE objekt, og det kan fint vises, hvis jeg klikker på det i tabelen. Kan en af jer "hajer" fortælle mig hvad jeg gør galt?
Koden:
<% Set myConn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.RecordSet") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data.mdb") myConn.Open strDSN strSQL = "SELECT ImageData FROM Images WHERE ImageID=1"
<% Set myConn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.RecordSet") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data.mdb") myConn.Open strDSN strSQL = "SELECT TOP 1 ImageData FROM Images order by ImageID desc"
Samme resultat. Faktisk har jeg ændret det stykke selv, som du ændre. Meningen er at jeg vil kalde asp filen fra en anden fil, med en query. Men for fejlfindingens skyld ændrede jeg det.
hmm... Gætter på det er et eks. fra activedeveloper du har brugt:?
<% Dim Image Set myConn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.RecordSet") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/aspdigital/db/demo.mdb") myConn.Open strDSN strSQL = "SELECT ImageData FROM Images WHERE ImageID = 1"
rs.Open strSQL, myConn, 1 If Not rs.EOF Then strImage = rs("ImageData").GetChunk(1024000) Response.ContentType = "image/gif" Response.BinaryWrite strImage Else Response.Write "Billedet findes ikke i databasen" End If rs.Close myConn.Close Set rs = Nothing Set myConn = Nothing Response.End %>
Hvis det er det, så prøv lige sådan her i stedet..
Set objRS = Server.CreateObject("ADODB.RecordSet") objRS.CursorLocation = adUseServer objRS.CursorType = adOpenForwardOnly objRS.LockType = adLockOptimistic objRS.Open "select ContentType,image from tilbud where id=" & strId, objConn, , , adCmdText
Response.Clear if objRS("ContentType") <> "" then Response.ContentType = objRS("ContentType") end if
Dim pic, len len = objRS("image").ActualSize if len > 0 then pic = objRS("image").GetChunk(len) Response.BinaryWrite pic end if Response.End Pic = Nothing objRS.Close objConn.Close
' Henter et billede fra databasen med ID=? og returnerer det som images %> Så må du lige rette feltnavne mm. til..
Ok, jeg har ændret sådan at data/tabeler passer. Samt fjernet inklude filen. Desuden har jeg "rem'met" nogle limier ud. Og nu får jeg da noget frem, hehe Men ikke et billed. Jeg har ændret koden til dette:
Set objRS = Server.CreateObject("ADODB.RecordSet") ' objRS.CursorLocation = adUseServer objRS.CursorType = adOpenForwardOnly ' objRS.LockType = adLockOptimistic objRS.Open "select ImageData from Images where ImageId=" & strId, objConn, , , adCmdText
Response.Clear ' if objRS("ContentType") <> "" then ' Response.ContentType = objRS("ContentType") ' end if
Dim pic, len len = objRS("ImageData").ActualSize if len > 0 then pic = objRS("ImageData").GetChunk(len) Response.BinaryWrite pic end if Response.End Pic = Nothing objRS.Close objConn.Close
' Henter et billede fra databasen med ID=? og returnerer det som images %>
Set objRS = Server.CreateObject("ADODB.RecordSet") ' objRS.CursorLocation = adUseServer objRS.CursorType = adOpenForwardOnly ' objRS.LockType = adLockOptimistic objRS.Open "select ImageData from Images where ImageId=" & strId, objConn, , , adCmdText
Response.Clear ' if objRS("ContentType") <> "" then Response.ContentType = "image/gif" ' end if
Dim pic, len len = objRS("ImageData").ActualSize if len > 0 then pic = objRS("ImageData").GetChunk(len) Response.BinaryWrite pic end if Response.End Pic = Nothing objRS.Close objConn.Close
' Henter et billede fra databasen med ID=? og returnerer det som images %>
Så kan den igen ikke genkende contenttype. Jeg tror den skal hedde "image/gif" Kan det være et plug-in til min IIS jeg mangler, er efterhånden løbet tør for ideer.
Er der ikke noget med at man kan "nøjes" med at linke til billedet via sin database. Sådan at billedet ikke behøver ligge i databasen. Har du evt. et script der løser opgaven på den måde?
' Select each file ' **************** For each file In mySmartUpload.Files ' Only if the file exist ' ********************** If file.IsMissing = false Then ' Save the files with his original names in a virtual path of the web server ' ************************************************************************** file.SaveAs(server.mappath("mappe/" & file.FileName)) ' sample with a physical path 'file.SaveAs("c:\" & file.FileName)
' Tæl antal filer... ' ****************************************** intCount = intCount + 1 sql = "insert into tabel(felt, felt, image) values('"&mySmartUpload.form("form1")&"','"&mySmartUpload.form("form2")&"','"&file.FileName&"')" myconn.execute(sql) End If Next
' Display the number of files which could be uploaded ' *************************************************** Response.Write("<BR>" & mySmartUpload.Files.Count & " files could be uploaded.<BR>")
' Display the number of files uploaded ' ************************************ Response.Write(intCount & " file(s) uploaded.<BR>") %>
</BODY> </HTML>
Sådan her fx.. Så skal du bare selv vælge hvad du vil have med i databasen, samt at rette hvor billedet skal gemmes i denne linie: file.SaveAs(server.mappath("mappe/" & file.FileName))
Scriptet er til upload af billeder ikke? Ikke til visning. Anyways, prøvede det, men min server kender ikke objectet aspsmartupload. Går udfra jeg mangler et plug-in.
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E0C) Der er ikke angivet nogen kommandotekst for kommandoobjektet. /test/pull_image2.asp, line 7
vil du ikke bare så hvis du fx. har en fil der hedder vis.asp
og så kalder den med: vis.asp?id=12 viser billedet med id = 12
for så skal du bare bruge det her:
<% if not isEmpty(request.querystring("id")) then Set rs = Server.CreateObject("ADODB.Connection") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data.mdb") strSQL = "SELECT ImageData FROM Images WHERE ImageID=" & request.querystring("id") rs.open strDSN
Det jeg prøver er fra min index fil (index.asp) er at lave en <img src="pull_image.asp?id=1"> Selve det du har lavet oven over virker perfekt, men jeg får ikke billedet (strengen på billedet) tilbage til min index fil.
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.