Avatar billede mamu Nybegynder
04. maj 2004 - 20:54 Der 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

'  DownloadField
'  *************
  mySmartUpload.DownloadField(oRs("pics"))
 
  ' samples with optionnals
  ' Call mySmartUpload.DownloadField(oRs("FILE"), "application/x-zip-compressed", "download.zip")
  ' Call mySmartUpload.DownloadField(oRs("FILE"), "application/x-zip-compressed", oRs("FILENAME").Value)

'  Destruction
'  ***********

  oRs.Close
  oConn.Close
  Set oRs = Nothing
  Set oConn = Nothing
%>
Avatar billede michael_stim Ekspert
04. maj 2004 - 21:00 #1
do while not oRs.EOF
Dine billeder
oRs.MoveNext
loop
Avatar billede mamu Nybegynder
04. maj 2004 - 21:08 #2
Det får stadig ikke

mySmartUpload.DownloadField(oRs("pics"))

til at virke
Avatar billede michael_stim Ekspert
04. maj 2004 - 21:12 #3
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
Avatar billede keysersoze Ekspert
04. maj 2004 - 21:12 #4
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;

<img src="../billedmappe/<%=rs("img")%>" alt="">
Avatar billede mamu Nybegynder
04. maj 2004 - 21:16 #5
<keysersoze> Jeg ville også helst gøre det på den måde, men det kan desværre ikke lade sig gøre på den server jeg bruger.
Avatar billede michael_stim Ekspert
04. maj 2004 - 21:18 #6
Vil give keysersoze helt ret, har selv dårlige erfaringer med det. Det bliver utroligt langsomt, og det er ikke bare Access.
Avatar billede michael_stim Ekspert
04. maj 2004 - 21:19 #7
Ok men brugden kode jeg sendte.

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
Avatar billede mamu Nybegynder
04. maj 2004 - 21:22 #8
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
%>

Dette giver dog kun følgende output:

oRs(pics)
oRs(pics)
oRs(pics)
oRs(pics)
oRs(pics)
oRs(pics)
oRs(pics)
oRs(pics)
Avatar billede keysersoze Ekspert
04. maj 2004 - 21:24 #9
Response.BinaryWrite oRs(pics)
Avatar billede mamu Nybegynder
04. maj 2004 - 21:25 #10
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)
Avatar billede michael_stim Ekspert
04. maj 2004 - 21:26 #11
Klip og klister min kommentar fra:04/05-2004 21:19:27
Så skulle det virke.
Avatar billede mamu Nybegynder
04. maj 2004 - 21:27 #12
<Response.BinaryWrite oRs(pics)>

så vil siden slet ikke vises
Avatar billede mamu Nybegynder
04. maj 2004 - 21:31 #13
Så er der klippet og klistret til den store guldmedalje, men jeg får bare at vide at siden ikke kan vises...
Avatar billede michael_stim Ekspert
04. maj 2004 - 21:33 #14
Hvilken fejl får du?
Avatar billede mamu Nybegynder
04. maj 2004 - 21:35 #15
Jeg får ingen fejl, siden vil slet ikke vises. Fjerner jeg

Response.BinaryWrite oRs("pics")

virker det fint... udover at billederne selvfølgelig ikke udskrives
Avatar billede michael_stim Ekspert
04. maj 2004 - 21:36 #16
Response.BinaryWrite oRs(pics)

Hvad med uden semikolon?
Avatar billede mamu Nybegynder
04. maj 2004 - 21:39 #17
Uden "" virker det stadig ikke - siden vil ikke vises
Avatar billede keysersoze Ekspert
04. maj 2004 - 21:45 #18
brug

Response.BinaryWrite oRs("pics")

og gør følgende

funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"

så får vi en fejlbesked vi kan bruge til noget
Avatar billede mamu Nybegynder
04. maj 2004 - 21:52 #19
Ok det giver så:

Response object error 'ASP 0106 : 80020005'

Type Mismatch

/pk/login/hentpic.asp, line 22

An unhandled data type was encountered.
Avatar billede mamu Nybegynder
04. maj 2004 - 21:53 #20
Og line 22 er

Response.BinaryWrite oRs("pics")
Avatar billede mamu Nybegynder
04. maj 2004 - 21:55 #21
billederne skulle meget gerne være jpg-format, men måske er der gået noget galt når jeg uploader.
Avatar billede michael_stim Ekspert
04. maj 2004 - 22:27 #22
Sorry telefonen ringede. Hvilket felt gemmer du din binäre data i?
Avatar billede michael_stim Ekspert
04. maj 2004 - 22:30 #23
pröv at skriv:
Response.Write oRs("pics")
Avatar billede mamu Nybegynder
04. maj 2004 - 22:36 #24
Med
Response.Write oRs("pics")
skrives der ikke noget - men der kommer heller ikke nogen fejl
Avatar billede mamu Nybegynder
04. maj 2004 - 22:39 #25
Og jeg sender til databasen med:

<%
'  Variables
'  *********
  Dim mySmartUpload
  Dim file
  Dim oConn
  Dim strSQL
  Dim oRs
  Dim intCount
  intCount=0
       
'  Object creation
'  ***************
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
 
'  Tilladte formater 
  mySmartUpload.AllowedFilesList = "gif,jpg,png"
 
'  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
%>

Hvor formen der henvises til ser således ud:

<FORM METHOD="POST" ACTION="aspsmartupload.asp" ENCTYPE="multipart/form-data">
  <INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
  <INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>
Avatar billede michael_stim Ekspert
04. maj 2004 - 22:41 #26
Hvilken datatype er pics?
Avatar billede mamu Nybegynder
04. maj 2004 - 22:44 #27
OLE-objekt
Avatar billede michael_stim Ekspert
04. maj 2004 - 23:02 #28
Har du checket om der er noget i pics?
Avatar billede mamu Nybegynder
04. maj 2004 - 23:14 #29
Det troede jeg faktisk jeg havde, men jeg kan se det ikke er tilfældet - så problemet må ligge i min upload-fil
Avatar billede michael_stim Ekspert
04. maj 2004 - 23:18 #30
Tänk på at du har sat billederne til en maxsize på 29 kB
Avatar billede mamu Nybegynder
04. maj 2004 - 23:23 #31
De to jeg har uploadet (som jeg så ikke har uploadet alligevel) er på 4 kB og 12 kB, så det er næppe problemet.
Avatar billede michael_stim Ekspert
04. maj 2004 - 23:46 #32
Det er din upload der noget galt med, kikker på den imorgen.
Avatar billede mamu Nybegynder
04. maj 2004 - 23:48 #33
Tak for hjælpen, hvis du vil have nogen point, så må du lige poste et svar
Avatar billede michael_stim Ekspert
04. maj 2004 - 23:49 #34
Ja, når vi er klar ;o)
Avatar billede mamu Nybegynder
04. juli 2004 - 00:06 #35
lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester