Tänkte använda följande kod för att plocka ut bilder ur en access-databas för att sedan visa dem i besökarens webläsare: Hett tips: Varför inte skriva ut filen direkt? Det blir ingen bild. (Bara text.) Vad är fel eller saknas ?? Du kan inte blanda in någon html kod. Du måste oxå lägga till en header för att ange vilken typ av data servern retunerar. Thanks ! Du kan lägg in vilkor i SQL satsen:Streama bilder från access-databas....
--databas-koppling --
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.Write objRSa("Bilddata")
Response.BinaryWrite objStream.Read
Funkar detta tro ? Om inte någon som vet hur isåfall man gör ?Sv: Streama bilder från access-databas....
Pröva. Funkar det? Varför fråga?
Funkar inte? Då kan man fråga och då vet man också vad man ska fråga om...Sv: Streama bilder från access-databas....
<code>
Dim fldField
Set fldField = objRSa("Bilddata")
objStream.Write fldField.GetChunk(fldField.ActualSize)
</code>
Eller i minder bitar med en for loop.Sv: Streama bilder från access-databas....
Min kod :
<%@ Language=VBScript %>
<% Response.Buffer = True %>
<html>
</body>
<%
Dim objConn, objRS, Sql, objStream
Const adOpenKeyset = 1, adLockOptimistic = 3, adTypeBinary = 1
grpDsn = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=c:\bilder.mdb;" &_
"Persist Security Info=False"
Set objConn = Server.CreateObject("ADODB.connection")
Set objRS = Server.CreateObject("ADODB.Recordset")
objConn.ConnectionString = grpDsn
objConn.Open
Sql = "Select * from bilder ;"
objRS.Open Sql, objConn, adOpenKeyset, adLockOptimistic
objRS.MoveFirst
Response.BinaryWrite objRS("Bilder")
%>
</body>
</html>Sv: Streama bilder från access-databas....
Något mer korrekt borde vara:
<code>
<%@ Language=VBScript %><%
Option Explicit
Dim objRS
Dim objConn
Dim strSQL
Response.Buffer = True
grpDsn = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=c:\bilder.mdb;" &_
"Persist Security Info=False"
Set objConn = Server.CreateObject("ADODB.connection")
objConn.Open grpDsn
strSQL = "SELECT * FROM bilder"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn
If objRS.EOF Then
Response.Write "<h1>File not found!</h1>"
Else
Response.Clear
Response.BinaryWrite objRS("Bilder").Value
Response.Flush
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
Response.End
%>
</code>
Det är ju intressant att veta hur du sparat bilderna till databasen. Har du infogat dem som ActivX objekt. KAn du inte göra på detta sättet. Utan du måste läst in filen binärt.Sv: Streama bilder från access-databas....
Nu funkar det fint. Men det går bara att visa en bild i taget med ditt svar på mitt inlägg.
Jag läste på en annan asp-sajt att man skulle lägga binär delen i en egen asp-fil som man kallar på genom <img> taggen ex. <img src="file.asp?Id=2">
Finns det fler alternativ eller genvägar ?
En annan grej jag flundrar på om man kan sätta annat namn på laddad bild från databasen än asp-filens namn när man höger klickar på den i webläsaren ?Sv: Streama bilder från access-databas....
<code>
Dim Id
Id = "" & Request.Querystring("Id")
If IsNumeric(Id) Then
strSQL = "SELECT * FROM bilder WHERE Id=" & Id
Else
'Tar första bilden om inget id är angivet
strSQL = "SELECT TOP 1* FROM bilder"
End If
</code>