Avatar billede connor Nybegynder
18. september 2003 - 10:45 Der er 8 kommentarer og
1 løsning

Hente og indsætte billede fra en access database

Jeg prøver at finde ud af hvordan man kan hente et billede fra en access database. Billedet er gemt som "lange binære data" i access.

Jeg kan godt hente billedet med:
Response.OutputStream.Write((byte[])dbRead["FileData"], 0, (int)dbRead["FileSize"]);

men så kan jeg jo ikke placere det rigtigt på siden...

Jeg kunne godt tænke mig at vide hvordan man kunne indsætte billedet f.eks med denne:
<asp:Image id="Image1" runat="server" Height="147px" Width="174px"></asp:Image>

Her er min kode pt:
<%@ Page Language="C#" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

    // Insert page code here
    //
   
    void Page_Load(object sender, EventArgs e) {
   
        // Define SQL select statement
                string SQL = "SELECT * FROM tblFile";
   
                // Create Connection object
                OleDbConnection dbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("FileUpload.mdb") + ";");
   
                // Create Command Object
                OleDbCommand dbComm = new OleDbCommand(SQL, dbConn);
   
                // Open Connection
                dbConn.Open();
   
                // Execute command and receive DataReader
                OleDbDataReader dbRead = dbComm.ExecuteReader();
   
                // Read row
                //dbRead.Read();
   
                while (dbRead.Read()) {
   
                // Clear Response buffer
                //Response.Clear();
   
                // Set ContentType to the ContentType of our file
                //Response.ContentType = (string)dbRead["ContentType"];
   
                // Write data out of database into Output Stream
                //Response.OutputStream.Write((byte[])dbRead["FileData"], 0, (int)dbRead["FileSize"]);
                //Label1.Text = "Filnavn: "+dbRead["Filename"].ToString();
                //ListBox1.Items.Add("Filnavn: "+dbRead["Filename"].ToString());
                //Response.Write((byte[])dbRead["FileData"], 0, (int)dbRead["FileSize"]);
   
   
                }
   
                // Close database connection
                dbConn.Close();
   
                // End the page
                //Response.End();
   
   
   
   
    }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <p>
            <asp:Label id="Label1" runat="server">Label</asp:Label>
        </p>
        <p>
            <asp:ListBox id="ListBox1" runat="server" Height="227px" Width="466px"></asp:ListBox>
        </p>
        <p>
            <asp:Image id="Image1" runat="server" Height="147px" Width="174px"></asp:Image>
        </p>
        <!-- Insert content here -->
    </form>
</body>
</html>
Avatar billede odegaard Nybegynder
18. september 2003 - 11:33 #1
Tænk på at
<asp:Image id="Image1" runat="server" Height="147px" Width="174px"></asp:Image>
blot bliver til
<img src="en-URL.gif">

Dvs. du skal have en seperat fil som indeholder billedet. Enten gemmer du filen på disken og linker til den, eller også laver du en anden aspx-side der streamer billedet tilbage (der er flere eksempler på det sidste her på eksperten)
Avatar billede connor Nybegynder
18. september 2003 - 11:38 #2
Vil det sige at jeg ikke kan bruge billedet fra databasen til noget hvis jeg ønsker at trække det ind på web-siden via f.eks <asp:Image...  >  ?
Avatar billede connor Nybegynder
18. september 2003 - 11:41 #3
>>odegaard
Har du nogle links til de eksempler her på eksperten som omhandler streaming?
Avatar billede odegaard Nybegynder
18. september 2003 - 11:50 #4
Du kan ikke bruge det indefra den side som du laver referencen til billedet. Men du kan fx. lave en .aspx side der henter billedet fra DB'en og returnerer det. Fx. <img src="/getimage.aspx?ImageID=5322">
Avatar billede odegaard Nybegynder
18. september 2003 - 11:54 #5
Fra http://www.eksperten.dk/spm/250896 og
http://www.eksperten.dk/spm/260913

Det bliver noget i stil med
Response.ContentType= "Image/jpeg";
MyBitmap.save(Response.OutputStream, ImageFormat.Jpeg)
MyBitmap.Dispose()
Avatar billede odegaard Nybegynder
18. september 2003 - 11:57 #6
Egentlig behøver du ikke omsætte data fra DB'en til et billede. Du kan jo nøjes med at sende det direkte vha.
Response.BinaryWrite(MyRawData)
Avatar billede connor Nybegynder
18. september 2003 - 11:57 #7
Vil det sige at hvis jeg laver en fil (getimage.aspx) som udskriver et billede med: Response.OutputStream.Write((byte[])dbRead["FileData"], 0, (int)dbRead["FileSize"]);

Så kan jeg i en fil indsætte: <img src="/getimage.aspx?ImageID=5322">
Hvorefter billedet indsættes korrekt i min html-kode
Avatar billede odegaard Nybegynder
18. september 2003 - 12:04 #8
jep jeg tror du har fat i det :-)
Men hvorfor ikke tage længden af ((byte[])dbRead["FileData"]) i stedet for at bruge dbRead["FileSize"]?
Avatar billede connor Nybegynder
19. september 2003 - 08:43 #9
>> odegaard
Tak for hjlæpen, jeg har fået det til at virke nu.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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