【发布时间】:2012-01-16 03:46:24
【问题描述】:
这是在 vb.net 照片永远不会出现,我没有错误....???
这就是我在 SQl DB 中存储照片的方式
Sub StartUpLoad()
Dim imgName As String = FileUpload1.FileName
Dim imgSize As Int32 = FileUpload1.PostedFile.ContentLength
Dim photo As Byte() = New Byte(imgSize) {}
Dim user As String = "kdjhkjgh"
If FileUpload1.PostedFile IsNot Nothing AndAlso FileUpload1.PostedFile.FileName IsNot "" Then
If (FileUpload1.PostedFile.ContentLength > 100240) Then
Page.ClientScript.RegisterClientScriptBlock(GetType(Page), "alert depuis le codehind", String.Format("alert('{0}')", "Fichier trop gros"), True)
Else
Dim connectionString As String = WebConfigurationManager.ConnectionStrings("BecsEtMuseauxSQL").ConnectionString
Dim con As SqlConnection = New SqlConnection(connectionString)
con.Open()
Dim cmd As New SqlCommand("dbo.addPost", con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = user
cmd.Parameters.Add("@titre", SqlDbType.NVarChar).Value = TextBoxTitre.Text
cmd.Parameters.Add("@description", SqlDbType.VarChar).Value = TextBoxDescrip.Text
cmd.Parameters.Add("@image", SqlDbType.Image).Value = photo
cmd.ExecuteNonQuery()
con.Close()
Page.ClientScript.RegisterClientScriptBlock(GetType(Page), "alert depuis le codehind", String.Format("alert('{0}')", "Post sauvegardé"), True)
End If
End If
End Sub
这是我的处理程序
Public Class Handler : Implements IHttpHandler
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim connectionString As String = WebConfigurationManager.ConnectionStrings("BecsEtMuseauxSQL").ConnectionString
Dim con As SqlConnection = New SqlConnection(connectionString)
' Create SQL Command
Dim cmd As New SqlCommand()
cmd.CommandText = "Select Titre,Image from Post where ID =@IID"
cmd.CommandType = System.Data.CommandType.Text
cmd.Connection = con
Dim ImageID As New SqlParameter("@IID", Data.SqlDbType.Int)
ImageID.Value = Convert.ToInt32(context.Request.QueryString("ID"))
cmd.Parameters.Add(ImageID)
con.Open()
Dim dReader As SqlDataReader = cmd.ExecuteReader()
dReader.Read()
context.Response.BinaryWrite(DirectCast(dReader("Image"), Byte()))
dReader.Close()
con.Close()
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
结束类
这是我的 asp 数据网格
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False"
ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="Titre" HeaderText="Titre" SortExpression="Titre" />
<asp:TemplateField HeaderText="Image">
<ItemTemplate>
<asp:Image ID="Image1" runat="server"
ImageUrl='<%# Eval("ID", "Handler.ashx?ID={0}")%>'/>
</ItemTemplate>
<ControlStyle Height="200px" />
</asp:TemplateField>
<asp:ImageField DataImageUrlField="Image">
</asp:ImageField>
</Columns>
</asp:GridView>
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:BecsEtMuseauxSQL %>"
ProviderName="<%$ ConnectionStrings:BecsEtMuseauxSQL.ProviderName %>" SelectCommand="SELECT [ID], [Titre], [Image] FROM [Post]"></asp:SqlDataSource>
你知道为什么我的照片从来没有出现吗???
谢谢你帮助我!!!
【问题讨论】:
-
而不是将图像存储在表中,可能是您应该存储图像路径(目录)