[ASP / Access] afbeelding uit database (OLE)

Pagina: 1
Acties:

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Ik heb een databeest gekregen waarin wat producten met foto staan, nu is het de bedoeling dat de inhoud van dit databeest via een ASP pagina op het internet wordt gepubliceerd. Het weergeven van de teksten en zooi is geen probleem en het weergeven van de foto zou ook geen probleem zijn geweest als deze gewoon binair naar de database zou zijn geschreven...

Nu staan deze foto's echter in de database (ze zijn dus zichtbaar in een formulier wat in de dbase gebruikt wordt).

Mijn vraag is, is het mogelijk om afbeeldingen die op bovenstaande manier in een dbase zijn opgeslagen weer te geven via asp, en zo ja, hoe?

Ik heb in de search / google al het een en ander gevonden mbt de Getchunk methode. Ik hoopte eigenlijk dat die methode gebruikt kon worden om de data binair weg te schrijven, maar, dat werkt dus niet / lukt bij mij niet :o.

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Het is mogelijk de afbeeldingen middels ASP weer te geven. het enige waar je op moet letten is dat de content-type geen text/html (default) is maar in jou geval image/binair:

ASP:
1
2
Response.ContentType = "image/jpeg".
Response.BinaryWrite Recordset("Image")


Ook is het aan te raden een Response.AddHeader comment toe te voegen zodat de browser het juiste formaat voor de afbeelding hanteerd in het geval deze moet worden opgeslagen.

ASP:
1
Response.AddHeader "Content-Disposition", "inline; filename=blaat" 

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
devraux schreef op 13 april 2003 @ 18:39:
Het is mogelijk de afbeeldingen middels ASP weer te geven. het enige waar je op moet letten is dat de content-type geen text/html (default) is maar in jou geval image/binair:

ASP:
1
2
Response.ContentType = "image/jpeg".
Response.BinaryWrite Recordset("Image")


Ook is het aan te raden een Response.AddHeader comment toe te voegen zodat de browser het juiste formaat voor de afbeelding hanteerd in het geval deze moet worden opgeslagen.

ASP:
1
Response.AddHeader "Content-Disposition", "inline; filename=blaat" 
Dit is dus precies de methode die ik al had geprobeerd, en deze werkt niet... Als ik dit doe dan krijg ik het bekende rode kruisje...

Wat ik nu heb staan:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!-- #include file="inc_config.asp" -->
<%
Response.Buffer = True

sqlquery = "SELECT picture FROM blaat WHERE blaat=blaat;"
RSa.Open sqlquery, Con, 3, 3

'// werkt niet
'Response.ContentType = "image/jpeg"
'Response.BinaryWrite(RSa("picture"))
'Response.AddHeader "Content-Disposition", "inline; filename=blaat"

'// werkt ook niet
If RSa.Recordcount > 1 Then
    Response.Write("Teveel records...")
Else
    While Not RSa.Eof
    Response.ContentType = "image/jpeg"
    Response.BinaryWrite (RSa("picture").GetChunk(RSa("picture").ActualSize)) 
    Wend
End If
RSa.Close
Con.Close
Set RSa = Nothing
Set Con = Nothing
%>

[ Voor 9% gewijzigd door faabman op 13-04-2003 20:51 . Reden: ff iets korten gemaakt (opmaak GoT) ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
niemand??

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Hmm een while not rsa.eof, daar zul je sowieso een rsa.movenext neer moeten planten, anders kom je in een oneindige loop..... en ik zou sowieso niet in een loop alle plaatjes naar de client sturen aangezien dat ook niet zo strak werkt. Check voorlopig na het openen eerst of ie EOF is, en zo niet, toon 1 plaatje (loop weg dus).

Exact expert nodig?


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
ik heb eens hetzelfde probleem gehad en ook geen oplossing voor kunnen vinden, mijn toppic is vast via de search te vinden...

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 15:14

TeeDee

CQB 241

Deze heb ik ooit eens geprobeerd:

http://www.stardeveloper....article=2001040401&page=1

Werkte perfect!

Onderstaande code is van het file wat de img toont! (regelrechte copy/paste)
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%
   ' -- file.asp --
   ' Retrieves binary files from the database
   
   Response.Buffer = True
   
   ' ID of the file to retrieve
   Dim ID
      ID = Request("ID")
      
   If Len(ID) < 1 Then
      ID = 7
   End If
   
   ' Connection String
   Dim connStr
      connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
         Server.MapPath("FileDB.mdb")
   
   ' Recordset Object
   Dim rs
      Set rs = Server.CreateObject("ADODB.Recordset")
      
      ' opening connection
      rs.Open "select [File Data],[Content Type] from Files where ID = " & _
         ID, connStr, 2, 4

      If Not rs.EOF Then
         Response.ContentType = rs("Content Type")
         Response.BinaryWrite rs("File Data")
      End If
      
      
      rs.Close
      Set rs = Nothing
%>


Nogmaals, dit zou gewoon moeten werken, want ik heb deze tut ook ooit eens doorlopen, en niks geen problemen.

Verder nog een puntje: stop de contents van je include file daar eens in?
Je browser verwacht nu namelijk (volgens mij) soort van HTML, terwijl het een binary write is!!!

[ Voor 13% gewijzigd door TeeDee op 15-04-2003 15:03 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Het probleem is dat als je een plaatje invoegd in een tabel in Acces, dat er dan een OLE-header wordt voorgezet waarin informatie staat over waarmee het plaatje geopend kan worden onder andere.

Daarom wordt je plaatje niet getoond, maar een rood kruisje.

Ik ben ook op zoek naar een oplossing, maar tot op heden heb ik niet kunnen vinden.

Verwijderd

Zorg dat je data ook binary in je db is gezet(dus niet rechtstreeks via access) anders worden headers enzo meegeschreven en werkt het grapje niet.
Voor de rest zou het perfect moeten werken maar je contenttype lijkt mij vrij raar, ik zou gewoon bij het wegschrijven naar de db ook contenttype wegschrijven en het gewoon opvragen (zekerheid).
Voor de rest zou ik alle If/whiles etc weglaten en het eerst eens kaal proberen.
Werkt bij mij perfect (asp.net)
Suc6
Pagina: 1