display/retrieve image from sql database in vb.net

后端 未结 2 540
孤独总比滥情好
孤独总比滥情好 2020-12-18 15:59

This should be pretty simple for a pro. I have images in sql server database and I want to retrieve them in my aspx (vb.net) file. I have in aspx this image control - in vb

2条回答
  •  爱一瞬间的悲伤
    2020-12-18 16:40

    You need both a command object and a data reader. However, you are putting them in the wrong page.

    If you check out the properties of the Image control you will see that it doesn't have any Image property, so you can't load an image and put in the control. The reason for that is that you can't send both the page and the image in the same response, instead the browser has to request the image separately when the page loads.

    To get the image from the database and show in the web page you need a separate proxy page that you can use to get only the image data from the database. In the ImageUrl property of the Image control you would put something like "GetImage.ashx". Then you make an HTTP handler with that name that will just get the image data from the database and write to the response stream.

    Example:

    Private Sub HandleRequest(context as HttpContext)
      Dim SqlCnn As SqlConnection = Nothing, sql As String
      Dim emp_id As Integer
      emp_id = Int32.Parse(context.Request.QueryString("id"))
      ConnectDB(SqlCnn)
      Try
        sql = "SELECT image FROM employees (NOLOCK) WHERE ID =" & emp_id
        sqlcmd = New SqlCommand(sqlstr, SqlCnn)
        Dim imageData As Byte() = DirectCast(sqlcmd.ExecuteScalar(), Byte())
        context.Response.ContentType = "image/jpeg"
        context.Response.BinaryWrite(imageData)
      Catch ex As Exception
        ReportError(ex)
      Finally
        CloseDB(SqlCnn)
      End Try
    End Sub
    

提交回复
热议问题