2013-12-17 2 views
0

продолжение вопроса о display (not download) image from dbотображения изображения из БД наряду с другими элементами веб-страницы

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="imgTest1.aspx.vb" Inherits="imgTest" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <div style="background-color: aliceblue;"> 
       <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
       <br /> 
       <br /> 
       <br /> 
       <br /> 
      </div> 

      <div style="background-color: burlywood;"> 
       <asp:Image ID="Image1" runat="server" ImageUrl="imgTest1.aspx?id=1" /> 
       <br /> 
       <br /> 
       <br /> 
      </div> 

     </div> 
    </form> 
</body> 
</html> 



Imports System.IO 
Imports System.Data 
Imports System.Data.SqlClient 

Partial Class imgTest 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 

     If Request.QueryString("id") IsNot Nothing Then 

      Dim strQuery As String = "select name, contentType, data from [imageTest] where id=1" 
      Dim cmd As SqlCommand = New SqlCommand(strQuery) 
      cmd.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32("1") 

      Dim dt As DataTable = GetData(cmd) 

      If dt IsNot Nothing Then 
       Dim bytes() As Byte = CType(dt.Rows(0)("data"), Byte()) 
       Response.Buffer = True 
       Response.Charset = "" 
       Response.Cache.SetCacheability(HttpCacheability.NoCache) 
       Response.ContentType = dt.Rows(0)("ContentType").ToString() 
       Response.AddHeader("content-disposition", "filename=" & dt.Rows(0)("name").ToString()) 
       Response.BinaryWrite(bytes) 
       Response.Flush() 
       Response.End() 
      End If 

     End If 

    End Sub 

    Public Function GetData(ByVal cmd As SqlCommand) As DataTable 
     Dim dt As New DataTable 
     Dim strConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("CapstoneConnectionString1").ConnectionString 
     Dim con As New SqlConnection(strConnString) 
     Dim sda As New SqlDataAdapter 
     cmd.CommandType = CommandType.Text 
     cmd.Connection = con 
     Try 
      con.Open() 
      sda.SelectCommand = cmd 
      sda.Fill(dt) 
      Return dt 
     Catch ex As Exception 
      Response.Write(ex.Message) 
      Return Nothing 
     Finally 
      con.Close() 
      sda.Dispose() 
      con.Dispose() 
     End Try 
    End Function 

End Class 

теперь я могу отобразить изображение на странице ASPX, но только изображение отображается, все другие веб-элементы отсутствуют.

ответ

1

я могу думать только одной причины для этого, учитывая, что следующие условия:

  1. Страница используется для отображения содержимого является imgTest1.aspx, а также страница используется для возвращения изображения также imgTest1.aspx.
  2. imgTest1.aspx всегда вызывается с параметром запроса, id.

из-за этой страницы всегда возвращает изображение.

Вы можете изменить код следующим образом и расскажите нам, как это работает:

... 
... 
<asp:Image ID="Image1" runat="server" ImageUrl="imgTest1.aspx?imageId=1" /> 
... 
... 

и код-за

If Request.QueryString("imageId") IsNot Nothing Then 

    Dim strQuery As String = "select name, contentType, data from [imageTest] where id=1" 
    Dim cmd As SqlCommand = New SqlCommand(strQuery) 
    cmd.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32("1") 
+0

ТНХ, он работает сейчас. Но что он работал после изменения «QueryString»? –

Смежные вопросы