04. maj 2004 - 20:54Der er
34 kommentarer og 1 løsning
Udskriv billede fra database
Hej eksperter
Jeg har en række billeder liggende i en database og skal hente dem og have dem vist. Jeg har prøvet med nedenstående kode, men det virker ikke. Jeg får ingen fejl før jeg inkludere linien:
mySmartUpload.DownloadField(oRs("pics"))
Hvorefter siden ikke vil vises.
Det skal nok lige nævnes at billederne ligger i en tabel (news), i recorden (pics). Der ligger desuden ikke billeder i alle felterne i (pics), hvilket måske er problemet. Efter
mySmartUpload.DownloadField(oRs("pics"))
mangler billederne desuden af blive skrevet ud. (Det er vist noget med Response.BinaryWrite "oRs(pics)" i en eller anden løkke)
<% ' Variables ' ********* Dim mySmartUpload Dim oConn Dim strSQL Dim oRs
' Object creation ' *************** Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
' Connect to the DB ' ***************** Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "DBQ=d:\inetpub\database\pk.mdb; Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
' Open a recordset ' ****************
strSQL = "SELECT * FROM news"
Set oRs = Server.CreateObject("ADODB.recordset") Set oRs.ActiveConnection = oConn oRs.Source = strSQL oRs.Open
Dim oConn Dim strSQL Dim oRs ' Connect to the DB ' ***************** Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "DBQ=d:\inetpub\database\pk.mdb; Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;" strSQL = "SELECT * FROM news" set oRs = oConn.execute(strSQL)
do while not oRs.EOF Response.BinaryWrite "oRs(pics)" oRs.MoveNext loop
Du skal ikke bruge aspsmartuploads download funktion for at vise billeder - denne funktion er kun til hvis du vil tilbyde download af filer til klientens computer.
Specielt når du arbejder med access er det en rigtig dårlig idé at gemme filer direkte i databasen. Gem i stedet for kun filnavnet og læg så filen i en mappe på serveren - det letter arbejdet rigtig meget både for databasen med også for dig. Når du så skal vise billedet igen gør du bare som ved et normalt billede fx;
Dim oConn Dim strSQL Dim oRs ' Connect to the DB ' ***************** Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "DBQ=d:\inetpub\database\pk.mdb; Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;" strSQL = "SELECT * FROM news" set oRs = oConn.execute(strSQL)
do while not oRs.EOF Response.BinaryWrite oRs("pics") oRs.MoveNext loop
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing
Ok har prøvet at omskrive den lidt, så den nu ser sådan ud:
<% ' Variables ' ********* Dim mySmartUpload Dim oConn Dim strSQL Dim oRs
' Connect to the DB ' ***************** Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "DBQ=d:\inetpub\database\pk.mdb; Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;" strSQL = "SELECT * FROM news" set oRs = oConn.execute(strSQL)
do while not oRs.EOF Response.BinaryWrite "oRs(pics)" Response.Write "<br>" oRs.MoveNext loop
' Destruction ' ***********
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %>
Med hensyn til hastigheden tror jeg ikke det bliver det store problem, da der max skal ligge 5 små billeder ad gangen (det er i forbindelse med upload af nyheder)
' Only allow files smaller than 30000 bytes ' ***************************************** mySmartUpload.MaxFileSize = 30000
' Upload ' ****** mySmartUpload.Upload
' Connect to the DB ' ***************** Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "DBQ=d:\inetpub\database\pk.mdb; Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
' Open a recordset ' **************** strSQL = "SELECT * FROM news"
Set oRs = Server.CreateObject("ADODB.recordset") Set oRs.ActiveConnection = oConn oRs.Source = strSQL oRs.LockType = 3 oRs.Open
' Select each file ' **************** For each file In mySmartUpload.Files ' Only if the file exist ' ********************** If not file.IsMissing Then
' Add the current file in a DB field ' ********************************** oRs.AddNew file.FileToField oRs.Fields("pics") oRs("pics") = mySmartUpload.form("FILE1") oRs.Update intCount = intCount + 1 End If Next
' Display the number of files uploaded ' ************************************ Response.Write(intCount & " file(s) uploaded.<BR>")
' Destruction ' *********** oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %>
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.